home *** CD-ROM | disk | FTP | other *** search
/ Programming Sound Cards / Programming Sound Cards.iso / sound_56 / sblaster.doc < prev    next >
Text File  |  1995-01-01  |  206KB  |  4,852 lines

  1.  
  2.  
  3.  
  4.    ▄▄▄▄                          ▄▄▄▄
  5.   █                              █   █
  6.   █▄▄▄▄▄  ▄▄▄  ▄   ▄ ▄▄▄▄  ▄▄▄▄  █▄▄▄█▄ ▄      ▄▄▄  ▄▄▄▄▄ ▄▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄
  7.        █ █   █ █   █ █   █ █   █ █    █ █     █▄▄▄█ █▄▄▄▄   █    █▄▄   █▄▄▄▀
  8.        █ █   █ █   █ █   █ █   █ █    █ █     █   █     █   █    █     █   █
  9.   ▀▀▀▀▀▀ ▀▀▀▀▀  ▀▀▀▀ ▀   ▀ ▀▀▀▀  ▀▀▀▀▀▀ ▀▀▀▀▀ ▀   ▀ ▀▀▀▀▀   ▀    ▀▀▀▀▀ ▀   ▀
  10.                        Programming Information v0.90
  11.                               January 29, 1995
  12.  
  13.                        André Baresel - Craig Jackson
  14.                              Copyright (c) 1995
  15.  
  16.  
  17.  
  18. ==============================================================================
  19.  DISCLAIMER
  20. ------------------------------------------------------------------------------
  21.  
  22.   ALL INFORMATION IN THIS DOCUMENT WAS OBTAINED FROM NON-CONFIDENTIAL, PUBLIC
  23.   DOMAIN, SOURCES AND LEGAL INVESTIGATION BY THE AUTHORS.  APART FROM CASUAL
  24.   EXAMININATION OF THE SOUNDBLASTER OWNER'S MANUALS, ABSOLUTELY NO REFERENCE
  25.   WAS MADE TO CREATIVE LABS DOCUMENTATION INCLUDING, BUT NOT LIMITED TO,
  26.   SOFTWARE DEVELOPMENT KITS, PROGRAMMING NOTES, AND SOURCE CODE.
  27.  
  28.   THIS DOCUMENT IS NEITHER GUARANTEED TO BE FIT FOR ANY PARTICULAR PURPOSE NOR
  29.   TO BE ENTIRELY CORRECT.  LIABILITY RESTS WITH THE USER OF THE DOCUMENTATION
  30.   IF AND WHEN INFORMATION CONTAINED HEREIN RESULTS DIRECTLY OR INDIRECTLY IN
  31.   LOSS OF PROFITS, PRODUCTIVITY, OR SLEEP.  ABSOLUTELY NO WARRANTIES OR
  32.   GUARANTIES, EITHER EXPRESSED OR IMPLIED, ACCOMPANY THIS DOCUMENT.  THIS
  33.   DOCUMENT, ITS AUTHORS, AND CONTRIBUTORS CLAIM NO AFFILIATION WITH CREATIVE
  34.   LABS NOR DO THEY NECESSARILY ENDORSE ANY OF THE COMPANIES OR PRODUCTS
  35.   MENTIONED.  THIS DOCUMENT IS FREELY REDISTRIBUTABLE ONLY IN ITS ORIGINAL
  36.   UNMODIFIED FORM AND PROVIDED NO DIRECT PROFIT IS MADE FROM ITS DISTRIBUTION.  
  37.   ALL COPYRIGHTS AND TRADEMARKS BELONG TO THEIR RESPECTIVE OWNERS.
  38.  
  39. ==============================================================================
  40.  SOUNDBLASTER MODELS
  41. ------------------------------------------------------------------------------
  42.   SoundBlaster 1.0
  43.   SoundBlaster 1.5            
  44.   SoundBlaster 2.0                        
  45.   SoundBlaster MCV (MCA)
  46.   SoundBlaster Pro
  47.   SoundBlaster Pro2                       
  48.   SoundBlaster Pro Value Edition
  49.   SoundBlaster Pro MCV (MCA)
  50.   SoundBlaster 16
  51.   SoundBlaster 16 Basic Edition
  52.   SoundBlaster 16 Value Edition
  53.   SoundBlaster 16 ASP
  54.   SoundBlaster 16 MultiCD
  55.   SoundBlaster 16 MultiCD ASP
  56.   SoundBlaster 16 SCSI-2
  57.   SoundBlaster 16 SCSI-2 ASP
  58.   SoundBlaster AWE32                                                
  59.   SoundBlaster AWE32 Value Edition
  60.  
  61.  ╔═══════════════════════╤═══════════════════╤═══════════════════╗
  62.  ║ SOUNDBLASTER MODEL    │  8-BIT Hz (DAC)   │  16-BIT Hz (DAC)  ║
  63.  ║                       │       MONO        │       MONO        ║
  64.  ╠═══════════════════════╪═══════════════════╪═══════════════════╣
  65.  ║  SoundBlaster 1.x     │    4000-22222     │        N/A        ║
  66.  ╟───────────────────────┼───────────────────┼───────────────────╢
  67.  ║  SoundBlaster 2.x     │    4000-45454     │        N/A        ║
  68.  ╟───────────────────────┼───────────────────┼───────────────────╢
  69.  ║  SoundBlaster Pro     │    4000-45454     │        N/A        ║
  70.  ╟───────────────────────┼───────────────────┼───────────────────╢
  71.  ║  SoundBlaster 16      │    4000-45454     │     4000-45454    ║
  72.  ╟───────────────────────┼───────────────────┼───────────────────╢
  73.  ║  SoundBlaster AWE32   │    5000-45454     │     5000-45454    ║
  74.  ╚═══════════════════════╧═══════════════════╧═══════════════════╝
  75.  ╔═══════════════════════╤═══════════════════╤═══════════════════╗
  76.  ║ SOUNDBLASTER MODEL    │  8-BIT Hz (DAC)   │  16-BIT Hz (DAC)  ║
  77.  ║                       │      STEREO       │      STEREO       ║
  78.  ╠═══════════════════════╪═══════════════════╪═══════════════════╣
  79.  ║  SoundBlaster 1.x     │        N/A        │        N/A        ║
  80.  ╟───────────────────────┼───────────────────┼───────────────────╢
  81.  ║  SoundBlaster 2.x     │        N/A        │        N/A        ║
  82.  ╟───────────────────────┼───────────────────┼───────────────────╢
  83.  ║  SoundBlaster Pro     │    4000-22727     │        N/A        ║
  84.  ╟───────────────────────┼───────────────────┼───────────────────╢
  85.  ║  SoundBlaster 16      │    4000-45454     │     4000-45454    ║
  86.  ╟───────────────────────┼───────────────────┼───────────────────╢
  87.  ║  SoundBlaster AWE32   │    5000-45454     │     5000-45454    ║
  88.  ╚═══════════════════════╧═══════════════════╧═══════════════════╝
  89.  
  90.  ╔═══════════════════════╤═══════════════════╤═══════════════════╗
  91.  ║ SOUNDBLASTER MODEL    │  8-BIT Hz (ADC)   │  16-BIT Hz (ADC)  ║
  92.  ║                       │       MONO        │       MONO        ║
  93.  ╠═══════════════════════╪═══════════════════╪═══════════════════╣
  94.  ║  SoundBlaster 1.x     │    4000-11111     │        N/A        ║
  95.  ╟───────────────────────┼───────────────────┼───────────────────╢
  96.  ║  SoundBlaster 2.x     │    4000-15151     │        N/A        ║
  97.  ╟───────────────────────┼───────────────────┼───────────────────╢
  98.  ║  SoundBlaster Pro     │    4000-45454     │        N/A        ║
  99.  ╟───────────────────────┼───────────────────┼───────────────────╢
  100.  ║  SoundBlaster 16      │    4000-45454     │     4000-45454    ║
  101.  ╟───────────────────────┼───────────────────┼───────────────────╢
  102.  ║  SoundBlaster AWE32   │    5000-45454     │     5000-45454    ║
  103.  ╚═══════════════════════╧═══════════════════╧═══════════════════╝
  104.  ╔═══════════════════════╤═══════════════════╤═══════════════════╗
  105.  ║ SOUNDBLASTER MODEL    │  8-BIT Hz (ADC)   │  16-BIT Hz (ADC)  ║
  106.  ║                       │      STEREO       │      STEREO       ║
  107.  ╠═══════════════════════╪═══════════════════╪═══════════════════╣
  108.  ║  SoundBlaster 1.x     │        N/A        │        N/A        ║
  109.  ╟───────────────────────┼───────────────────┼───────────────────╢
  110.  ║  SoundBlaster 2.x     │        N/A        │        N/A        ║
  111.  ╟───────────────────────┼───────────────────┼───────────────────╢
  112.  ║  SoundBlaster Pro     │    4000-22727     │        N/A        ║
  113.  ╟───────────────────────┼───────────────────┼───────────────────╢
  114.  ║  SoundBlaster 16      │    4000-45454     │     4000-45454    ║
  115.  ╟───────────────────────┼───────────────────┼───────────────────╢
  116.  ║  SoundBlaster AWE32   │    5000-45454     │     5000-45454    ║
  117.  ╚═══════════════════════╧═══════════════════╧═══════════════════╝
  118.  
  119. ==============================================================================
  120.  SOUNDBLASTER COMPATIBLES 
  121. ------------------------------------------------------------------------------
  122.  ???                         AudioDrive 688
  123.  ???                         Laserwave Supra 16
  124.  ???                         MediaConcept Pro
  125.  Adaptec                     Audio Machine???
  126.  Addonics???                 Sound Master
  127.  Add Tech                    Sound 2000
  128.  Advanced Gravis             Gravis Ultrasound
  129.                              Gravis Ultrasound MAX
  130.  Alpha Systems               VR
  131.  ATI                         ATI Stereo F/X
  132.  AVM Technology              AltraPro
  133.  Aztech                      Sound Galaxy???
  134.                              Sound Galaxy BXII
  135.                              Sound Galaxy BXII Extra
  136.                              Sound Galaxy Basic 16
  137.                              Sound Galaxy Basic 16 Extra
  138.                              Sound Galaxy Nova 16 
  139.                              Sound Galaxy NXII
  140.                              Sound Galaxy NX Pro
  141.                              Sound Galaxy Orion 16
  142.                              Sound Galaxy Pro???
  143.                              Sound Galaxy Pro 16
  144.  Biostar???                  MediaChips Audio Device 16 (7168VMD)
  145.  Bluepoint                   Sound FX 3000???
  146.  Cardinal Technologies       Digital Sound Pro 16
  147.                              Sound Pilot
  148.  Computer Peripherals        ViVa Maestro 16
  149.                              ViVa Maestro 16 VR
  150.  CPS                         AudioBlaster 1.0
  151.                              AudioBlaster 1.5
  152.                              AudioBlaster 2.0
  153.                              AudioBlaster 2.5
  154.                              AudioBlaster 4.0
  155.  Diamond                     Sonic Sound
  156.                              Sonic Sound LX
  157.  DSP Solutions               PORT*ABLE Sound Plus
  158.  Ensoniq                     Ensoniq Soundscape
  159.  Gallant                     Audio Plus True 16
  160.  Genoa Systems               AudioBahn 16 Pro
  161.  IBM                         IBM Windsurfer
  162.  Kingston Technologies       Omnivox
  163.  Logitech Inc.               Soundman 16
  164.                              Soundman Wave
  165.  Lyben                       Sound Card Basic
  166.                              Sound Card 16 Stereo
  167.  MediaMagic                  OnMagic???
  168.  MediaTrix                   AudioTrix Pro
  169.  MediaVision                 Deluxe
  170.                              Premium 3D
  171.                              Premium 3D MultiCD
  172.                              Premium 3D SCSI-2
  173.                              Pro 3D   
  174.                              Pro Audio 16 Basic
  175.                              Pro Audio Spectrum 16
  176.                              Pro Audio Studio
  177.                              Pro Sonic 16
  178.  MEI                         Premium 16 Sound Card
  179.  Microsoft                   Windows Sound System 2.0???
  180.  MultiWave Innovation Inc.   AudioWave Platinum 16
  181.  Nu Reality                  Vivid 3D???
  182.  Oak Technologies            Mozart-128
  183.  Orchid                      GameWave 32
  184.                              Sound Producer
  185.                              SoundWave 32
  186.  Paradise                    Audio Basic
  187.                              Audio Professional
  188.  ProLink Computer Inc.       SoundPlus
  189.  Prometheus                  Aria 16
  190.                              Aria 16se       
  191.  Reveal                      Sound FX/32 Wavetable (SC600)
  192.  Sigma Designs               Reel Magic
  193.  Triumph Logistic Computers  Audio Forge Professional
  194.  Trust                       Sound Expert 16 Deluxe
  195.  Turtle Beach                Monte Carlo                
  196.                              Tropez   
  197.  Yamaha                      Yamaha CBX-B1
  198.  Zoltrix                     TESS
  199.  
  200. ==============================================================================
  201.  ENVIRONMENT VARIABLE
  202. ------------------------------------------------------------------------------
  203.  BLASTER=Aa Ii Dd Hh Pp Tt
  204.    Aa - Base Address                    0210h, 0220h, 0230h, 0240h, 
  205.                                             0250h, 0260h, 0280h
  206.    Ii - Interrupt Request                     2, 3, 5, 7, 10
  207.    Dd - DMA Channel, 8-bit                       0, 1, 3
  208.    Hh - DMA Channel, 16-bit                      5, 6, 7
  209.    Pp - Base MIDI Address                      0300h, 0330h
  210.    Tt - Model                        1(1.x), 2(Pro), 3(2.0), 4(Pro2.0), 
  211.                                            5(ProMCV), 6(16, AWE32)
  212.  
  213.  NOTE: 16-bit DMA definition may actually refer to an 8-bit DMA alias.
  214.  
  215. ==============================================================================
  216.  HARDWARE PORTS
  217. ------------------------------------------------------------------------------
  218.  02x00h         C/MS 1-6 - Data Port                    Write       SB Only
  219.  02x00h         FM Music - Left Status Port             Read        SBPro
  220.  02x00h         FM Music - Left Register Port           Write       SBPro
  221.  02x01h         C/MS 1-6 - Register Port                Write       SB Only
  222.  02x01h         FM Music - Left Data Register           Write       SBPro
  223.  02x02h         C/MS7-12 - Data Port                    Write       SB Only
  224.  02x02h         FM Music - Right Status Port            Read        SBPro
  225.  02x02h         FM Music - Right Register Port          Write       SBPro
  226.  02x03h         C/MS7-12 - Register Port                Write       SB Only
  227.  02x03h         FM Music - Right Data Register          Write       SBPro
  228.  02x04h         Mixer - Register Port                   Write       SBPro
  229.  02x05h         Mixer - Data Register                   Read/Write  SBPro
  230.  02x06h         DSP - Reset                             Write       SB
  231.  02x08h         FM Music - Compatible Status Port       Read        SB
  232.  02x08h         FM Music - Compatible Register Port     Write       SB
  233.  02x09h         FM Music - Compatible Data Register     Write       SB
  234.  02x0Ah         DSP - Read Data                         Read        SB
  235.  02x0Ch         DSP - Write Data or Command             Write       SB
  236.  02x0Ch         DSP - Write Buffer Status               Read        SB
  237.  02x0Dh         DSP - Timer Interrupt Clear             Read        SB16???
  238.  02x0Eh         DSP - Data Available Status             Read        SB
  239.  02x0Eh         DSP - IRQ Acknowledge, 8-bit            Read        SB
  240.  02x0Fh         DSP - IRQ Acknowledge, 16-bit           Read        SB16
  241.  02x10h         CD-ROM - Data Register                  Read        SBPro
  242.  02x10h         CD-ROM - Command Port                   Write       SBPro
  243.  02x11h         CD-ROM - Status Port                    Read        SBPro
  244.  02x12h         CD-ROM - Reset                          Write       SBPro
  245.  02x13h         CD-ROM - Enable                         Write       SBPro
  246.  0388h          AdLib - Status Port                     Read        SB
  247.  0388h          AdLib - Register Port                   Write       SB
  248.  0389h          AdLib - Data Register                   Write       SB
  249.  038Ah          Advanced AdLib - Status Port            Read        SB16
  250.  038Ah          Advanced AdLib - Register Port          Write       SB16
  251.  038Bh          Advanced AdLib - Data Register          Write       SB16
  252.  03x00h         MPU-401 - Data Port                     Read/Write  SB16???
  253.  03x01h         MPU-401 - Status Port                   Read        SB16???
  254.  03x01h         MPU-401 - Command Port                  Write       SB16???
  255.  0200h-0207h    Joystick                                Varies      SB
  256.  
  257. ------------------------------------------------------------------------------
  258.  02x00h     C/MS - Data Port     (Voice 1-6)            Write       SB Only
  259.  
  260.     DESCRIPTION
  261.      References currently selected C/MS voice 1-6 index register.
  262.  
  263.     PROCEDURE
  264.       a) Write register index (02x01h)
  265.       b) Write register data  (02x00h)
  266.  
  267.     SEE ALSO
  268.      02x01h  C/MS - Register Port (Voice 1- 6)  Write
  269.      ·····················································
  270.      02x02h  C/MS - Data Port     (Voice 7-12)  Write
  271. ------------------------------------------------------------------------------
  272.  02x00h     FM Music - Left Status Port                 Read        SBPro
  273.  
  274.     DESCRIPTION
  275.      Categorizes left-channel synthesizer generated timer interrupts.
  276.  
  277.     STATUS BYTE
  278.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  279.      ║ 7 │ 6 │ 5 │[4]│[3]│[2]│[1]│[0]║
  280.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  281.        │   │   │   │   │   │   │   └─┬─ Reserved (1)
  282.        │   │   │   │   │   │   └─────┤
  283.        │   │   │   │   │   └─────────┤
  284.        │   │   │   │   └─────────────┤
  285.        │   │   │   └─────────────────┘
  286.        │   │   └─────────────────────── Timer 2 Status      (1 = Expired)
  287.        │   └─────────────────────────── Timer 1 Status      (1 = Expired)
  288.        └─────────────────────────────── Global Timer Status (1 = Active )
  289.  
  290.     NOTES
  291.      ■ Global Timer Status will be active if either timer has expired.
  292.      ■ Counter period of Timer 1 is 80µs, and Timer 2 is 230µs.
  293.      ■ Synthesizer generated timer interrupts are signalled on IRQ0.
  294.  
  295.     SEE ALSO
  296.      02x00h  FM Music - Left Register Port      Write
  297.      02x01h  FM Music - Left Data Register      Write
  298.      ·····················································
  299.      02x08h  FM Music - Compat. Status Port     Read
  300.       0338h  AdLib    - Status Port             Read
  301.      ·····················································
  302.      02x02h  FM Music - Right Status Port       Read
  303. ------------------------------------------------------------------------------
  304.  02x00h     FM Music - Left Register Port               Write       SBPro
  305.  
  306.     DESCRIPTION
  307.      Selects register index into left-channel synthesizer data port (02x01h)
  308.  
  309.     PROCEDURE
  310.       a) Write register index (02x00h)
  311.       b) Wait 3.3µs (0.0?µs OPL3)
  312.       c) Write register data  (02x01h)
  313.       d) Wait 23µs  (0.28µs OPL3)
  314.  
  315.     NOTES
  316.      ■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
  317.         connecting this channel to the left speaker exclusively; whereas later
  318.         models began using OPL3-compatible synthesizers, which send all output
  319.         to both the left and right speakers unless programmed to do otherwise.
  320.  
  321.     SEE ALSO
  322.      02x00h  FM Music - Left Status Port        Read
  323.      02x01h  FM Music - Left Data Register      Write
  324.      ·····················································
  325.      02x08h  FM Music - Compat. Register Port   Write
  326.       0338h  AdLib    - Register Port           Write
  327.      ·····················································
  328.      02x02h  FM Music - Right Register Port     Write
  329. ------------------------------------------------------------------------------
  330.  02x01h     C/MS - Register Port (Voice 1-6)            Write       SB Only
  331.  
  332.     DESCRIPTION
  333.      Selects register index into C/MS voice 1-6 data port (02x00h)
  334.  
  335.     PROCEDURE
  336.       a) Write register index (02x01h)
  337.       b) Write register data  (02x00h)
  338.  
  339.     SEE ALSO
  340.      02x00h  C/MS - Data Port     (Voice 1- 6)  Write
  341.      ·····················································
  342.      02x03h  C/MS - Register Port (Voice 7-12)  Write
  343. ------------------------------------------------------------------------------
  344.  02x01h     FM Music - Left Data Register               Write       SBPro
  345.  
  346.     DESCRIPTION
  347.      References currently selected left-channel synthesizer index register.
  348.  
  349.     PROCEDURE
  350.       a) Write register index (02x00h)
  351.       b) Wait 3.3µs (0.0?µs OPL3)
  352.       c) Write register data  (02x01h)
  353.       d) Wait 23µs  (0.28µs OPL3)
  354.  
  355.     NOTES
  356.      ■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
  357.         connecting this channel to the left speaker exclusively; whereas later
  358.         models began using OPL3-compatible synthesizers, which send all output
  359.         to both the left and right speakers unless programmed to do otherwise.
  360.  
  361.     SEE ALSO
  362.      02x00h  FM Music - Left Status Port        Read
  363.      02x00h  FM Music - Left Register Port      Write
  364.      ·····················································
  365.      02x09h  FM Music - Compat. Data Register   Write
  366.       0339h  AdLib    - Data Register           Write
  367.      ·····················································
  368.      02x03h  FM Music - Right Data Register     Write
  369. ------------------------------------------------------------------------------
  370.  02x02h     C/MS - Data Port     (Voice 7-12)           Write       SB Only
  371.  
  372.     DESCRIPTION
  373.      References currently selected C/MS voice 7-12 index register.
  374.  
  375.     PROCEDURE
  376.       a) Write register index (02x03h)
  377.       b) Write register data  (02x02h)
  378.  
  379.     SEE ALSO
  380.      02x03h  C/MS - Register Port (Voice 7-12)  Write
  381.      ·····················································
  382.      02x00h  C/MS - Data Port     (Voice 1- 6)  Write
  383. ------------------------------------------------------------------------------
  384.  02x02h     FM Music - Right Status Port                Read        SBPro
  385.  
  386.     DESCRIPTION
  387.      Categorizes right-channel synthesizer generated timer interrupts.
  388.  
  389.     STATUS BYTE
  390.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  391.      ║ 7 │ 6 │ 5 │[4]│[3]│[2]│[1]│[0]║
  392.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  393.        │   │   │   │   │   │   │   └─┬─ Reserved (1)
  394.        │   │   │   │   │   │   └─────┤
  395.        │   │   │   │   │   └─────────┤
  396.        │   │   │   │   └─────────────┤
  397.        │   │   │   └─────────────────┘
  398.        │   │   └─────────────────────── Timer 2 Status      (1 = Expired)
  399.        │   └─────────────────────────── Timer 1 Status      (1 = Expired)
  400.        └─────────────────────────────── Global Timer Status (1 = Active )
  401.  
  402.     NOTES
  403.      ■ Global Timer Status will be active if either timer has expired.
  404.      ■ Counter period of Timer 1 is 80µs, and Timer 2 is 230µs.
  405.      ■ Synthesizer generated timer interrupts are signalled on IRQ0.
  406.  
  407.     SEE ALSO
  408.      02x02h  FM Music - Right Register Port     Write
  409.      02x03h  FM Music - Right Data Register     Write
  410.      ·····················································
  411.       038Ah  A. Adlib - Status Port             Read
  412.      ·····················································
  413.      02x00h  FM Music - Left Status Port        Read
  414. ------------------------------------------------------------------------------
  415.  02x02h     FM Music - Right Register Port              Write       SBPro
  416.  
  417.     DESCRIPTION
  418.      Selects register index into right-channel synthesizer data port (02x03h)
  419.  
  420.     PROCEDURE
  421.       a) Write register index (02x02h)
  422.       b) Wait 3.3µs (0.0?µs OPL3)
  423.       c) Write register data  (02x03h)
  424.       d) Wait 23µs  (0.28µs OPL3)
  425.  
  426.     NOTES
  427.      ■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
  428.         connecting this channel to the right speaker exclusively; whereas later
  429.         models began using OPL3-compatible synthesizers, which send all output
  430.         to both the left and right speakers unless programmed to do otherwise.
  431.  
  432.     SEE ALSO
  433.      02x02h  FM Music - Right Status Port       Read
  434.      02x03h  FM Music - Right Data Register     Write
  435.      ·····················································
  436.       038Ah  A. Adlib - Register Port           Write
  437.      ·····················································
  438.      02x00h  FM Music - Left Register Port      Write
  439. ------------------------------------------------------------------------------
  440.  02x03h     C/MS - Register Port (Voice 7-12)           Write       SB Only
  441.  
  442.     DESCRIPTION
  443.      Selects register index into C/MS voice 7-12 data port (02x02h)
  444.  
  445.     PROCEDURE
  446.       a) Write register index (02x03h)
  447.       b) Write register data  (02x02h)
  448.  
  449.     SEE ALSO
  450.      02x02h  C/MS - Data Port     (Voice 7-12)  Write
  451.      ·····················································
  452.      02x01h  C/MS - Register Port (Voice 1- 6)  Write
  453. ------------------------------------------------------------------------------
  454.  02x03h     FM Music - Right Data Register              Write       SBPro
  455.  
  456.     DESCRIPTION
  457.      References currently selected right-channel synthesizer index register.
  458.  
  459.     PROCEDURE
  460.       a) Write register index (02x02h)
  461.       b) Wait 3.3µs (0.0?µs OPL3)
  462.       c) Write register data  (02x03h)
  463.       d) Wait 23µs  (0.28µs OPL3)
  464.  
  465.     NOTES
  466.      ■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
  467.         connecting this channel to the right speaker exclusively; whereas later
  468.         models began using OPL3-compatible synthesizers, which send all output
  469.         to both the left and right speakers unless programmed to do otherwise.
  470.  
  471.     SEE ALSO
  472.      02x02h  FM Music - Right Status Port       Read
  473.      02x02h  FM Music - Right Register Port     Write
  474.      ·····················································
  475.       038Bh  A. Adlib - Data Register           Write
  476.      ·····················································
  477.      02x01h  FM Music - Left Data Register      Write
  478. ------------------------------------------------------------------------------
  479.  02x04h     Mixer - Register Port                       Write       SBPro
  480.  
  481.     DESCRIPTION
  482.      Selects register index into mixer data port (02x05h)
  483.  
  484.     SELECTION BYTE
  485.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  486.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  487.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  488.        │   │   │   │   │   │   │   └─── Mixer Register Index bit   0 (SB16)
  489.        │   │   │   │   │   │   └─────┬─ Mixer Register Index bit 3-1 (SBPro)
  490.        │   │   │   │   │   └─────────┤
  491.        │   │   │   │   └─────────────┘
  492.        │   │   │   └─────────────────── Mixer Register Index bit   4 (SB16)
  493.        │   │   └─────────────────────┬─ Mixer Register Index bit 7-5 (SBPro)
  494.        │   └─────────────────────────┤
  495.        └─────────────────────────────┘
  496.  
  497.     PROCEDURE
  498.       a) Write mixer index     (02x04h)
  499.       b) Read/write mixer data (02x05h)
  500.  
  501.     NOTES
  502.      ■ See complete mixer reference later in this document.
  503.      ■ MediaVision 3D-series cards use this port for index and data output.
  504.  
  505.     SEE ALSO
  506.      02x05h  Mixer - Data Register              Read/Write
  507. ------------------------------------------------------------------------------
  508.  02x05h     Mixer - Data Register                       Read/Write  SBPro
  509.  
  510.     DESCRIPTION
  511.      References currently selected mixer index register.
  512.  
  513.     PROCEDURE
  514.       a) Write mixer index     (02x04h)
  515.       b) Read/write mixer data (02x05h)
  516.  
  517.     NOTES
  518.      ■ See complete mixer reference later in this document.
  519.  
  520.     SEE ALSO
  521.      02x05h  Mixer - Register Port              Write
  522. ------------------------------------------------------------------------------
  523.  02x06h     DSP - Reset                                 Write       SB
  524.  
  525.     DESCRIPTION
  526.      Performs complete reset of DSP, terminating all pending operations.
  527.  
  528.     PROCEDURE
  529.       a) Write 001h
  530.       b) Wait 3.3µs minimum
  531.       c) Write 000h
  532.       d) Wait 100µs maximum for DSP Data Available (02x0Eh)
  533.       e) Read 0AAh from DSP Read Data (02x0Ah)
  534.  
  535.     NOTES
  536.      ■ Reset of DSP disables speaker (see DSP command 0D3h).
  537. ------------------------------------------------------------------------------
  538.  02x08h     FM Music - Compatible Status Port           Read        SB
  539.  
  540.     DESCRIPTION
  541.      Categorizes left-channel synthesizer generated timer interrupts.
  542.  
  543.     STATUS BYTE
  544.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  545.      ║ 7 │ 6 │ 5 │[4]│[3]│[2]│[1]│[0]║
  546.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  547.        │   │   │   │   │   │   │   └─┬─ Reserved (1)
  548.        │   │   │   │   │   │   └─────┤
  549.        │   │   │   │   │   └─────────┤
  550.        │   │   │   │   └─────────────┤
  551.        │   │   │   └─────────────────┘
  552.        │   │   └─────────────────────── Timer 2 Status      (1 = Expired)
  553.        │   └─────────────────────────── Timer 1 Status      (1 = Expired)
  554.        └─────────────────────────────── Global Timer Status (1 = Active )
  555.  
  556.     NOTES
  557.      ■ Global Timer Status will be active if either timer has expired.
  558.      ■ Counter period of Timer 1 is 80µs, and Timer 2 is 230µs.
  559.      ■ Synthesizer generated timer interrupts are signalled on IRQ0.
  560.      ■ Alias for FM Music - Left Status Port (02x00h) on SBPro or higher.
  561.  
  562.     SEE ALSO
  563.      02x08h  FM Music - Compat. Register Port   Write
  564.      02x09h  FM Music - Compat. Data Register   Write
  565.      ·····················································
  566.      02x00h  FM Music - Left Status Port        Read
  567. ------------------------------------------------------------------------------
  568.  02x08h     FM Music - Compatible Register Port         Write       SB
  569.  
  570.     DESCRIPTION
  571.      Selects register index into left-channel synthesizer data port (02x09h)
  572.  
  573.     PROCEDURE
  574.       a) Write register index (02x08h)
  575.       b) Wait 3.3µs (0.0?µs OPL3)
  576.       c) Write register data  (02x09h)
  577.       d) Wait 23µs  (0.28µs OPL3)
  578.  
  579.     NOTES
  580.      ■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
  581.         connecting this channel to the left speaker exclusively; whereas later
  582.         models began using OPL3-compatible synthesizers, which send all output
  583.         to both the left and right speakers unless programmed to do otherwise.
  584.      ■ Alias for FM Music - Left Register Port (02x00h) on SBPro or higher.
  585.  
  586.     SEE ALSO
  587.      02x08h  FM Music - Compat. Status Port     Read
  588.      02x09h  FM Music - Compat. Data Register   Write
  589.      ·····················································
  590.      02x00h  FM Music - Left Register Port      Write
  591. ------------------------------------------------------------------------------
  592.  02x09h     FM Music - Compatible Data Register         Write       SB
  593.  
  594.     DESCRIPTION
  595.      References currently selected left-channel synthesizer index register.
  596.  
  597.     PROCEDURE
  598.       a) Write register index (02x08h)
  599.       b) Wait 3.3µs (0.0?µs OPL3)
  600.       c) Write register data  (02x09h)
  601.       d) Wait 23µs  (0.28µs OPL3)
  602.  
  603.     NOTES
  604.      ■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
  605.         connecting this channel to the left speaker exclusively; whereas later
  606.         models began using OPL3-compatible synthesizers, which send all output
  607.         to both the left and right speakers unless programmed to do otherwise.
  608.      ■ Alias for FM Music - Left Data Register (02x01h) on SBPro or higher.
  609.  
  610.     SEE ALSO
  611.      02x08h  FM Music - Compat. Status Port     Read
  612.      02x08h  FM Music - Compat. Register Port   Write
  613.      ·····················································
  614.      02x01h  FM Music - Left Data Register      Write
  615. ------------------------------------------------------------------------------
  616.  02x0Ah     DSP - Read Data                             Read        SB
  617.  
  618.     DESCRIPTION
  619.      Input port for DSP data byte reads.
  620.  
  621.     PROCEDURE
  622.       a) Loop until bit 7 = 1 of DSP Data Available Status (02x0Eh read)
  623.       b) Input byte from DSP Read Data port (02x0Ah read)
  624.  
  625.     NOTES
  626.      ■ Hard system resets occasionally cause some DSPs to leave an
  627.         extraneous data byte on the bus (typically 0AAh).  Perform
  628.         an explicit DSP reset at application startup to correct for this.
  629.  
  630.     SEE ALSO
  631.      02x0Eh  DSP - Data Available Status        Read
  632.      ·····················································
  633.      02x0Ch  DSP - Write Data or Command        Write
  634.      ·····················································
  635.      02x06h  DSP - Reset                        Write
  636. ----------------------------------------------------------------------------
  637.  02x0Ch     DSP - Write Data or Command                 Write       SB
  638.  
  639.     DESCRIPTION
  640.      Output port for DSP command and data byte writes.
  641.  
  642.     PROCEDURE
  643.       a) Loop until bit 7 = 0 of DSP Write Buffer Status (02x0Ch read)
  644.       b) Output byte to DSP Write Data or Command port (02x0Ch write)
  645.  
  646.     SEE ALSO
  647.      02x0Ch  DSP - Write Buffer Status          Read
  648.      ·····················································
  649.      02x0Ah  DSP - Read Data                    Read
  650. ------------------------------------------------------------------------------
  651.  02x0Ch     DSP - Write Buffer Status                   Read        SB
  652.  
  653.     DESCRIPTION
  654.      Indicates whether or not DSP is ready to receive data through
  655.       the DSP Write Data or Command port (02x0Ch write).
  656.  
  657.     STATUS BYTE
  658.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  659.      ║ 7 │[6]│[5]│[4]│[3]│[2]│[1]│[0]║
  660.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  661.        │   │   │   │   │   │   │   └─┬─ Reserved (?)
  662.        │   │   │   │   │   │   └─────┤
  663.        │   │   │   │   │   └─────────┤
  664.        │   │   │   │   └─────────────┤
  665.        │   │   │   └─────────────────┤
  666.        │   │   └─────────────────────┤
  667.        │   └─────────────────────────┘
  668.        └─────────────────────────────── Write Buffer Status (0 = Ready)
  669.  
  670.     PROCEDURE
  671.       a) Loop until bit 7 = 0 of DSP Write Buffer Status (02x0Ch read)
  672.       b) Output byte to DSP Write Data or Command port (02x0Ch write)
  673.  
  674.     SEE ALSO
  675.      02x0Ch  DSP - Write Data or Command        Write
  676.      ·····················································
  677.      02x0Eh  DSP - Data Available Status        Read
  678. ------------------------------------------------------------------------------
  679.  02x0Dh     DSP - Timer Interrupt Clear                 Read        SB16???
  680.         ???
  681. ------------------------------------------------------------------------------
  682.  02x0Eh     DSP - Data Available Status                 Read        SB
  683.  
  684.     DESCRIPTION
  685.      Indicates whether or not DSP has pending data to be read through
  686.       the DSP Read Data port (02x0Ah read).
  687.  
  688.     STATUS BYTE
  689.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  690.      ║ 7 │[6]│[5]│[4]│[3]│[2]│[1]│[0]║
  691.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  692.        │   │   │   │   │   │   │   └─┬─ Reserved (?)
  693.        │   │   │   │   │   │   └─────┤
  694.        │   │   │   │   │   └─────────┤
  695.        │   │   │   │   └─────────────┤
  696.        │   │   │   └─────────────────┤
  697.        │   │   └─────────────────────┤
  698.        │   └─────────────────────────┘
  699.        └─────────────────────────────── Read Status (1 = Ready)
  700.  
  701.     PROCEDURE
  702.       a) Loop until bit 7 = 1 of DSP Data Available Status (02x0Eh read)
  703.       b) Input byte from DSP Read Data port (02x0Ah read)
  704.  
  705.     SEE ALSO
  706.      02x0Ah  DSP - Read Data                    Read
  707.      ·····················································
  708.      02x0Ch  DSP - Write Buffer Status          Read
  709. ------------------------------------------------------------------------------
  710.  02x0Eh     DSP - IRQ Acknowledge, 8-bit                Read        SB
  711.  
  712.     DESCRIPTION
  713.      Acknowledges an IRQ signalled by an 8-bit DSP operation.
  714.  
  715.     PROCEDURE
  716.       a) IRQ: Read from IRQ Acknowledge, 8-bit port (02x0Eh)
  717.       b) IRQ: Perform Generic EOI (020h) to appropriate PICs
  718.  
  719.     NOTES
  720.      ■ Reflects correct DSP Data Available Status from IRQ.
  721.  
  722.     SEE ALSO
  723.      02x0Fh  DSP - IRQ Acknowledge, 16-bit      Read
  724. ------------------------------------------------------------------------------
  725.  02x0Fh     DSP - IRQ Acknowledge, 16-bit               Read        SB16
  726.  
  727.     DESCRIPTION
  728.      Acknowledges an IRQ signalled by an 16-bit DSP operation.
  729.  
  730.     PROCEDURE
  731.       a) IRQ: Read from IRQ Acknowledge, 16-bit port (02x0Fh)
  732.       b) IRQ: Perform Generic EOI (020h) to appropriate PICs
  733.  
  734.     NOTES
  735.      ■ Still used for aliased 16-bit DMA (see mixer register 081h)
  736.  
  737.     SEE ALSO
  738.      02x0Eh  DSP - IRQ Acknowledge, 8-bit       Read
  739. ------------------------------------------------------------------------------
  740.  02x10h     CD-ROM - Data Register                      Read        SBPro
  741.  
  742.     DESCRIPTION
  743.      Input port for active CD-ROM drive data and command response reads.
  744.  
  745.     PROCEDURE
  746.       a) Loop until bit 2 = 0 or bit 1 = 0 of CD-ROM Status Port (02x11h read)
  747.       b) Input byte from CD-ROM Data Register port (02x10h read)
  748.  
  749.     SEE ALSO
  750.      02x11h  CD-ROM - Status Port               Read
  751.      ·····················································
  752.      02x13h  CD-ROM - Enable                    Write
  753.      ·····················································
  754.      02x10h  CD-ROM - Command Port              Write
  755. ------------------------------------------------------------------------------
  756.  02x10h     CD-ROM - Command Port                       Write       SBPro
  757.  
  758.     DESCRIPTION
  759.      Output port for active CD-ROM drive command sequences.
  760.  
  761.     PROCEDURE
  762.      ???
  763.  
  764.     NOTES
  765.      ■ Command packets are seven bytes long.
  766.      ■ Interrupts should be disabled during output.
  767.  
  768.     SEE ALSO
  769.      02x13h  CD-ROM - Enable                    Write
  770.      ·····················································
  771.      02x10h  CD-ROM - Data Register             Read
  772. ------------------------------------------------------------------------------
  773.  02x11h     CD-ROM - Status Port                        Read        SBPro
  774.  
  775.     DESCRIPTION
  776.      Indicates whether or not active CD-ROM drive is waiting for command data,
  777.       has pending data available, or has prepared a command response.
  778.  
  779.     STATUS BYTE
  780.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  781.      ║[7]│[6]│[5]│[4]│[3]│ 2 │ 1 │ 0 ║
  782.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  783.        │   │   │   │   │   │   │   └─── Write Status   (0 = Busy, v1.0+)
  784.        │   │   │   │   │   │   └─────── Data Available (0 = Ready)
  785.        │   │   │   │   │   └─────────── Read Status    (0 = Ready)
  786.        │   │   │   │   └─────────────┬─ Reserved (1)
  787.        │   │   │   └─────────────────┤
  788.        │   │   └─────────────────────┤
  789.        │   └─────────────────────────┤
  790.        └─────────────────────────────┘
  791.  
  792.     SEE ALSO
  793.      02x10h  CD-ROM - Data Register             Read
  794.      02x10h  CD-ROM - Command Port              Write
  795.      ·····················································
  796.      02x13h  CD-ROM - Enable                    Write
  797. ------------------------------------------------------------------------------
  798.  02x12h     CD-ROM - Reset                              Write       SBPro
  799.  
  800.     DESCRIPTION
  801.      Performs complete reset of active CD-ROM drive.
  802.  
  803.     PROCEDURE
  804.       a) Write 001h
  805.       b) Wait 82µs??? minimum
  806.       c) Write 000h
  807.  
  808.     NOTES
  809.      ■ Reset will close open drive doors.
  810.  
  811.     SEE ALSO
  812.      02x13h  CD-ROM - Enable                    Write
  813. ------------------------------------------------------------------------------
  814.  02x13h     CD-ROM - Enable                             Write       SBPro
  815.  
  816.     DESCRIPTION
  817.      Selects active CD-ROM drive on multiple drive systems.
  818.  
  819.     PROCEDURE
  820.      ???
  821.  
  822.     SEE ALSO
  823.      02x10h  CD-ROM - Data Register             Read
  824.      02x10h  CD-ROM - Command Port              Write
  825.      02x11h  CD-ROM - Status Port               Read
  826.      02x12h  CD-ROM - Reset                     Write
  827. ------------------------------------------------------------------------------
  828.  0388h      AdLib - Status Port                         Read        SB
  829.  
  830.     DESCRIPTION
  831.      Categorizes left-channel synthesizer generated timer interrupts.
  832.  
  833.     STATUS BYTE
  834.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  835.      ║ 7 │ 6 │ 5 │[4]│[3]│[2]│[1]│[0]║
  836.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  837.        │   │   │   │   │   │   │   └─┬─ Reserved (1)
  838.        │   │   │   │   │   │   └─────┤
  839.        │   │   │   │   │   └─────────┤
  840.        │   │   │   │   └─────────────┤
  841.        │   │   │   └─────────────────┘
  842.        │   │   └─────────────────────── Timer 2 Status      (1 = Expired)
  843.        │   └─────────────────────────── Timer 1 Status      (1 = Expired)
  844.        └─────────────────────────────── Global Timer Status (1 = Active )
  845.  
  846.     NOTES
  847.      ■ Global Timer Status will be active if either timer has expired.
  848.      ■ Counter period of Timer 1 is 80µs, and Timer 2 is 230µs.
  849.      ■ Synthesizer generated timer interrupts are signalled on IRQ0.
  850.      ■ Alias for FM Music - Left Status Port (02x00h).
  851.  
  852.     SEE ALSO
  853.      0388h   AdLib - Register Port              Write
  854.      0389h   AdLib - Data Register              Write
  855.      ·····················································
  856.      02x00h  FM Music - Left Status Port        Read
  857. ------------------------------------------------------------------------------
  858.  0388h      AdLib - Register Port                       Write       SB
  859.  
  860.     DESCRIPTION
  861.      Selects register index into left-channel synthesizer data port (0389h)
  862.  
  863.     PROCEDURE
  864.       a) Write register index (0388h)
  865.       b) Wait 3.3µs (0.0?µs OPL3)
  866.       c) Write register data  (0389h)
  867.       d) Wait 23µs  (0.28µs OPL3)
  868.  
  869.     NOTES
  870.      ■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
  871.         connecting this channel to the left speaker exclusively; whereas later
  872.         models began using OPL3-compatible synthesizers, which send all output
  873.         to both the left and right speakers unless programmed to do otherwise.
  874.      ■ Alias for FM Music - Left Register Port (02x00h).
  875.  
  876.     SEE ALSO
  877.      0388h   AdLib - Status Port                Read
  878.      0389h   AdLib - Data Register              Write
  879.      ·····················································
  880.      02x00h  FM Music - Left Register Port      Write
  881. ------------------------------------------------------------------------------
  882.  0389h      AdLib - Data Register                       Write       SB
  883.  
  884.     DESCRIPTION
  885.      References currently selected left-channel synthesizer index register.
  886.  
  887.     PROCEDURE
  888.       a) Write register index (0388h)
  889.       b) Wait 3.3µs (0.0?µs OPL3)
  890.       c) Write register data  (0389h)
  891.       d) Wait 23µs  (0.28µs OPL3)
  892.  
  893.     NOTES
  894.      ■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
  895.         connecting this channel to the left speaker exclusively; whereas later
  896.         models began using OPL3-compatible synthesizers, which send all output
  897.         to both the left and right speakers unless programmed to do otherwise.
  898.      ■ Alias for FM Music - Left Data Register (02x01h).
  899.  
  900.     SEE ALSO
  901.      0388h   AdLib - Status Port                Read
  902.      0388h   AdLib - Register Port              Write
  903.      ·····················································
  904.      02x01h  FM Music - Left Data Register      Write
  905. ------------------------------------------------------------------------------
  906.  038Ah      Advanced AdLib - Status Port                Read        SB16
  907.  
  908.     DESCRIPTION
  909.      Categorizes right-channel synthesizer generated timer interrupts.
  910.  
  911.     STATUS BYTE
  912.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  913.      ║ 7 │ 6 │ 5 │[4]│[3]│[2]│[1]│[0]║
  914.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  915.        │   │   │   │   │   │   │   └─┬─ Reserved (1)
  916.        │   │   │   │   │   │   └─────┤
  917.        │   │   │   │   │   └─────────┤
  918.        │   │   │   │   └─────────────┤
  919.        │   │   │   └─────────────────┘
  920.        │   │   └─────────────────────── Timer 2 Status      (1 = Expired)
  921.        │   └─────────────────────────── Timer 1 Status      (1 = Expired)
  922.        └─────────────────────────────── Global Timer Status (1 = Active )
  923.  
  924.     NOTES
  925.      ■ Global Timer Status will be active if either timer has expired.
  926.      ■ Counter period of Timer 1 is 80µs, and Timer 2 is 230µs.
  927.      ■ Synthesizer generated timer interrupts are signalled on IRQ0.
  928.      ■ Alias for FM Music - Right Status Port (02x02h) on SB16 or higher.
  929.  
  930.     SEE ALSO
  931.      038Ah   A. AdLib - Register Port           Write
  932.      038Bh   A. AdLib - Data Register           Write
  933.      ·····················································
  934.      02x02h  FM Music - Right Status Port       Read
  935. ------------------------------------------------------------------------------
  936.  038Ah      Advanced AdLib - Register Port              Write       SB16
  937.  
  938.     DESCRIPTION
  939.      Selects register index into right-channel synthesizer data port (038Bh)
  940.  
  941.     PROCEDURE
  942.       a) Write register index (038Ah)
  943.       b) Wait 3.3µs (0.0?µs OPL3)
  944.       c) Write register data  (038Bh)
  945.       d) Wait 23µs  (0.28µs OPL3)
  946.  
  947.     NOTES
  948.      ■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
  949.         connecting this channel to the left speaker exclusively; whereas later
  950.         models began using OPL3-compatible synthesizers, which send all output
  951.         to both the left and right speakers unless programmed to do otherwise.
  952.      ■ Alias for FM Music - Right Register Port (02x02h) on SB16 or higher.
  953.  
  954.     SEE ALSO
  955.      038Ah   A. AdLib - Status Port             Read
  956.      038Bh   A. AdLib - Data Register           Write
  957.      ·····················································
  958.      02x02h  FM Music - Right Register Port     Write
  959. ------------------------------------------------------------------------------
  960.  038Bh      A. AdLib - Data Register                    Write       SB16
  961.  
  962.     DESCRIPTION
  963.      References currently selected right-channel synthesizer index register.
  964.  
  965.     PROCEDURE
  966.       a) Write register index (038Ah)
  967.       b) Wait 3.3µs (0.0?µs OPL3)
  968.       c) Write register data  (038Bh)
  969.       d) Wait 23µs  (0.28µs OPL3)
  970.  
  971.     NOTES
  972.      ■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
  973.         connecting this channel to the left speaker exclusively; whereas later
  974.         models began using OPL3-compatible synthesizers, which send all output
  975.         to both the left and right speakers unless programmed to do otherwise.
  976.      ■ Alias for FM Music - Right Data Register (02x03h) on SB16 or higher.
  977.  
  978.     SEE ALSO
  979.      038Ah   A. AdLib - Status Port             Read
  980.      038Ah   A. AdLib - Register Port           Write
  981.      ·····················································
  982.      02x03h  FM Music - Right Data Register     Write
  983. ------------------------------------------------------------------------------
  984.  03x00h     MPU-401 - Data Port                         Read/Write  SB16???
  985.  
  986.     DESCRIPTION
  987.      Port for MPU-401 data transfer.
  988.  
  989.     PROCEDURE (R)
  990.       a) Loop until bit 6 = 0 of MPU-401 Status Port (03x01h read)
  991.       b) Input byte from MPU-401 Data Register port (03x00h read/write)
  992.  
  993.     PROCEDURE (W)
  994.       a) Loop until bit 7 = 0 of MPU-401 Status Port (03x01h read)
  995.       b) Output byte to MPU-401 Data Register port (03x00h read/write)
  996.  
  997.     SEE ALSO
  998.      03x01h  MPU-401 - Status Port              Read
  999.      ·····················································
  1000.      03x01h  MPU-401 - Command Port             Write
  1001. ------------------------------------------------------------------------------
  1002.  03x01h     MPU-401 - Status Port                       Read        SB16???
  1003.  
  1004.     DESCRIPTION
  1005.      Indicates whether or not MPU-401 has data pending or is awaiting data.
  1006.  
  1007.     STATUS BYTE
  1008.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  1009.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  1010.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  1011.        │   │   │   │   │   │   │   └─┬─ Reserved (?)
  1012.        │   │   │   │   │   │   └─────┤
  1013.        │   │   │   │   │   └─────────┤
  1014.        │   │   │   │   └─────────────┤
  1015.        │   │   │   └─────────────────┤
  1016.        │   │   └─────────────────────┘
  1017.        │   └─────────────────────────── Data Read Register (0 = Ready)
  1018.        └─────────────────────────────── Data Set Ready     (0 = Ready)
  1019.  
  1020.     SEE ALSO
  1021.      03x00h  MPU-401 - Data Port                Read/Write
  1022.      ·····················································
  1023.      03x01h  MPU-401 - Command Port             Write
  1024. ------------------------------------------------------------------------------
  1025.  03x01h     MPU-401 - Command Port                      Write       SB16???
  1026.  
  1027.     DESCRIPTION
  1028.      Output port for MPU-401 command sequences.
  1029.  
  1030.     PROCEDURE (W)
  1031.       a) Loop until bit 7 = 0 of MPU-401 Status Port (03x01h read)
  1032.       b) Output byte to MPU-401 Command Port (03x01h write)
  1033.  
  1034.     SEE ALSO
  1035.      03x01h  MPU-401 - Status Port              Read
  1036.      ·····················································
  1037.      03x00h  MPU-401 - Data Port                Read/Write
  1038. ------------------------------------------------------------------------------
  1039.  0201h      Joystick Status Port                        Read/Write  SB
  1040.  
  1041.     DESCRIPTION
  1042.      Status port for joystick button and position read.
  1043.  
  1044.     JOYSTICK BYTE
  1045.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  1046.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  1047.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  1048.        │   │   │   │   │   │   │   └─── Joystick A: Switch X (1 = Reached)
  1049.        │   │   │   │   │   │   └─────── Joystick A: Switch Y (1 = Reached)
  1050.        │   │   │   │   │   └─────────── Joystick B: Switch X (1 = Reached)
  1051.        │   │   │   │   └─────────────── Joystick B: Switch Y (1 = Reached)
  1052.        │   │   │   └─────────────────── Joystick A: Button 1 (0 = Active )
  1053.        │   │   └─────────────────────── Joystick A: Button 2 (0 = Active )
  1054.        │   └─────────────────────────── Joystick B: Button 1 (0 = Active )
  1055.        └─────────────────────────────── Joystick B: Button 2 (0 = Active )
  1056.  
  1057.     PROCEDURE
  1058.       a) Output byte to Joystick Status Port (0201h read/write) to reset timer
  1059.       b) Loop until all directional bits charge in Joystick Status Port (0201h
  1060.           read/write), use elapsed time waiting on each bit proportionally
  1061.  
  1062.  
  1063. ==============================================================================
  1064.  DSP COMMANDS
  1065. ------------------------------------------------------------------------------
  1066.  003h           ASP Status                                          SB16ASP
  1067.  004h           DSP Status (Obsolete)                               SB2.0-Pro2
  1068.  004h           ASP ???                                             SB16ASP
  1069.  005h           ASP ???                                             SB16ASP
  1070.  010h           Direct DAC, 8-bit                                   SB
  1071.  014h           DMA DAC, 8-bit                                      SB
  1072.  016h           DMA DAC, 2-bit ADPCM                                SB
  1073.  017h           DMA DAC, 2-bit ADPCM Reference                      SB
  1074.  01Ch           Auto-Initialize DMA DAC, 8-bit                      SB2.0
  1075.  01Fh           Auto-Initialize DMA DAC, 2-bit ADPCM Reference      SB2.0
  1076.  020h           Direct ADC, 8-bit                                   SB
  1077.  024h           DMA ADC, 8-bit                                      SB
  1078.  028h           Direct ADC, 8-bit (Burst)                           SB-Pro2
  1079.  02Ch           Auto-Initialize DMA ADC, 8-bit                      SB2.0
  1080.  030h           MIDI Read Poll                                      SB
  1081.  031h           MIDI Read Interrupt                                 SB
  1082.  032h           MIDI Read Timestamp Poll                            SB???
  1083.  033h           MIDI Read Timestamp Interrupt                       SB???
  1084.  034h           MIDI Read Poll + Write Poll (UART)                  SB2.0
  1085.  035h           MIDI Read Interrupt + Write Poll (UART)             SB2.0???
  1086.  037h           MIDI Read Timestamp Interrupt + Write Poll (UART)   SB2.0???
  1087.  038h           MIDI Write Poll                                     SB
  1088.  040h           Set Time Constant                                   SB
  1089.  041h           Set Sample Rate                                     SB16
  1090.  045h           Continue Auto-Initialize DMA, 8-bit                 SB16
  1091.  047h           Continue Auto-Initialize DMA, 16-bit                SB16
  1092.  048h           Set DMA Block Size                                  SB2.0
  1093.  074h           DMA DAC, 4-bit ADPCM                                SB
  1094.  075h           DMA DAC, 4-bit ADPCM Reference                      SB
  1095.  076h           DMA DAC, 2.6-bit ADPCM                              SB
  1096.  077h           DMA DAC, 2.6-bit ADPCM Reference                    SB
  1097.  07Dh           Auto-Initialize DMA DAC, 4-bit ADPCM Reference      SB2.0
  1098.  07Fh           Auto-Initialize DMA DAC, 2.6-bit ADPCM Reference    SB2.0
  1099.  080h           Silence DAC                                         SB
  1100.  090h           Auto-Initialize DMA DAC, 8-bit (High Speed)         SB2.0-Pro2
  1101.  098h           Auto-Initialize DMA ADC, 8-bit (High Speed)         SB2.0-Pro2
  1102.  0A0h           Disable Stereo Input Mode                           SBPro Only
  1103.  0A8h           Enable Stereo Input Mode                            SBPro Only
  1104.  0Bxh/0Cxh      Generic DAC/ADC DMA (16-bit, 8-bit)                 SB16
  1105.  0D0h           Halt DMA Operation, 8-bit                           SB
  1106.  0D1h           Enable Speaker                                      SB
  1107.  0D3h           Disable Speaker                                     SB
  1108.  0D4h           Continue DMA Operation, 8-bit                       SB
  1109.  0D5h           Halt DMA Operation, 16-bit                          SB16
  1110.  0D6h           Continue DMA Operation, 16-bit                      SB16
  1111.  0D8h           Speaker Status                                      SB
  1112.  0D9h           Exit Auto-Initialize DMA Operation, 16-bit          SB16
  1113.  0DAh           Exit Auto-Initialize DMA Operation, 8-bit           SB2.0
  1114.  0E0h           DSP Identification                                  SB2.0
  1115.  0E1h           DSP Version                                         SB
  1116.  0E3h           DSP Copyright                                       SBPro2???
  1117.  0E4h           Write Test Register                                 SB2.0
  1118.  0E8h           Read Test Register                                  SB2.0
  1119.  0F0h           Sine Generator                                      SB
  1120.  0F1h           DSP Auxiliary Status (Obsolete)                     SB-Pro2
  1121.  0F2h           IRQ Request, 8-bit                                  SB
  1122.  0F3h           IRQ Request, 16-bit                                 SB16
  1123.  0FBh           DSP Status                                          SB16
  1124.  0FCh           DSP Auxiliary Status                                SB16
  1125.  0FDh           DSP Command Status                                  SB16
  1126.  
  1127. ------------------------------------------------------------------------------
  1128.  003h       ASP Status                                              SB16ASP
  1129.     COMMAND <-STATUS
  1130.  
  1131.     ???
  1132. ------------------------------------------------------------------------------
  1133.  004h       DSP Status (Obsolete)                                   SB2.0-Pro2
  1134.     COMMAND <-STATUS
  1135.  
  1136.     DESCRIPTION
  1137.      Retrieves information about pending DSP operations.
  1138.  
  1139.     STATUS BYTE
  1140.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  1141.      ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│ 1 │ 0 ║
  1142.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  1143.        │   │   │   │   │   │   │   └─── Speaker Status           (1 = Active)
  1144.        │   │   │   │   │   │   └─────── Stereo ADC Status        (1 = Active)
  1145.        │   │   │   │   │   └─────────── Reserved (0)
  1146.        │   │   │   │   └─────────────── Direct ADC   8-bit Burst (1 = Active)
  1147.        │   │   │   └─────────────────── DMA    DAC   2-bit ADPCM (1 = Active)
  1148.        │   │   └─────────────────────── DMA    DAC 2.6-bit ADPCM (1 = Active)
  1149.        │   └─────────────────────────── DMA    DAC   4-bit ADPCM (1 = Active)
  1150.        └─────────────────────────────── DMA    DAC   8-bit       (1 = Active)
  1151.  
  1152.     NOTES
  1153.      ■ SoundBlaster 2.0 implements only bit 3 and 7.
  1154.      ■ SoundBlaster Pro models do not support bit 7.
  1155.  
  1156.     SEE ALSO
  1157.      0F1h   DSP Auxiliary Status (Obsolete)
  1158.      ·····················································
  1159.      0FBh   DSP Status
  1160.      0FCh   DSP Auxiliary Status
  1161.      0FDh   DSP Command Status
  1162.      ·····················································
  1163.      0D8h   Speaker Status
  1164. ------------------------------------------------------------------------------
  1165.  004h       ASP ???                                                 SB16ASP
  1166.     COMMAND->???
  1167.  
  1168.     ???
  1169. ------------------------------------------------------------------------------
  1170.  005h       ASP ???                                                 SB16ASP
  1171.     COMMAND->DATAHIBYTE->DATALOBYTE
  1172.  
  1173.     ???
  1174. ------------------------------------------------------------------------------
  1175.  010h       Direct DAC, 8-bit                                       SB
  1176.     COMMAND->SAMPLEBYTE
  1177.  
  1178.     DESCRIPTION
  1179.      Outputs single sample.
  1180.  
  1181.     PROCEDURE
  1182.       a) Send Direct DAC, 8-bit command (010h) and sample
  1183.       b) Wait for correct timing
  1184.  
  1185.     NOTES
  1186.      ■ Direct mode maximum sample rate is 23KHz.
  1187.  
  1188.     SEE ALSO
  1189.      020h   Direct ADC, 8-bit
  1190. ------------------------------------------------------------------------------
  1191.  014h       DMA DAC, 8-bit                                          SB
  1192.     COMMAND->LENGTHLOBYTE->LENGTHHIBYTE
  1193.  
  1194.     DESCRIPTION
  1195.      Initiates 8-bit DMA transfer.
  1196.  
  1197.     PROCEDURE
  1198.       a) Install IRQ handler (hook vector, update PIC mask)
  1199.       b) Perform Set Time Constant command (040h), or otherwise set sample rate
  1200.       c) Perform Enable Speaker command (0D1h)
  1201.       d) Setup DMA controller (mode = 048h + channel)
  1202.       e) Perform DMA DAC, 8-bit command (014h)
  1203.       f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
  1204.                                perform Generic EOI (020h) to appropriate PICs)
  1205.       g) Perform Disable Speaker command (0D3h)
  1206.  
  1207.     LENGTH = SAMPLES - 1
  1208.  
  1209.     NOTES
  1210.      ■ Use command 0Cxh to avoid SoundBlaster 16 quantization errors.
  1211.  
  1212.     SEE ALSO
  1213.      0D0h   Halt DMA Operation, 8-bit
  1214.      0D4h   Continue DMA Operation, 8-bit
  1215.      ·····················································
  1216.      01Ch   Auto-Initialize DMA DAC, 8-bit                     
  1217.      090h   Auto-Initialize DMA DAC, 8-bit (High Speed)        
  1218.      0Cxh   Generic DAC/ADC DMA, 8-bit
  1219.      ·····················································
  1220.      017h   DMA DAC, 2-bit ADPCM Reference
  1221.      075h   DMA DAC, 4-bit ADPCM Reference
  1222.      077h   DMA DAC, 2.6-bit ADPCM Reference         
  1223.      ·····················································
  1224.      024h   DMA ADC, 8-bit                                          
  1225. ------------------------------------------------------------------------------
  1226.  016h       DMA DAC, 2-bit ADPCM                                    SB
  1227.     COMMAND->LENGTHLOBYTE->LENGTHHIBYTE
  1228.  
  1229.     DESCRIPTION
  1230.      Initiates 2-bit ADPCM DMA transfer with accumulated reference byte.
  1231.     This operation uses 8-bit DMA mode.
  1232.  
  1233.     PROCEDURE (after command 017h)
  1234.       a) Install IRQ handler (hook vector, update PIC mask)
  1235.       b) Perform Set Time Constant command (040h), or otherwise set sample rate
  1236.       c) Perform Enable Speaker command (0D1h)
  1237.       d) Setup DMA controller (mode = 048h + channel)
  1238.       e) Perform DMA DAC, 2-bit ADPCM command (016h)
  1239.       f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
  1240.                                perform Generic EOI (020h) to appropriate PICs)
  1241.       g) Perform Disable Speaker command (0D3h)
  1242.  
  1243.     LENGTH = (SAMPLES-1 + 3)/4
  1244.  
  1245.     NOTES
  1246.      ■ Supports up to 11KHz on SoundBlaster 1.x  
  1247.      ■ Ensoniq Soundscape does not support ADPCM.
  1248.  
  1249.     SEE ALSO
  1250.      0D0h   Halt DMA Operation, 8-bit
  1251.      0D4h   Continue DMA Operation, 8-bit
  1252.      ·····················································
  1253.      017h   DMA DAC, 2-bit ADPCM Reference
  1254.      ·····················································
  1255.      074h   DMA DAC, 4-bit ADPCM
  1256.      076h   DMA DAC, 2.6-bit ADPCM
  1257. ------------------------------------------------------------------------------
  1258.  017h       DMA DAC, 2-bit ADPCM Reference                          SB
  1259.     COMMAND->LENGTHLOBYTE->LENGTHHIBYTE
  1260.  
  1261.     DESCRIPTION
  1262.      Initiates 2-bit ADPCM DMA transfer with new reference byte.  This
  1263.     operation uses 8-bit DMA mode.
  1264.  
  1265.     PROCEDURE
  1266.       a) Install IRQ handler (hook vector, update PIC mask)
  1267.       b) Perform Set Time Constant command (040h), or otherwise set sample rate
  1268.       c) Perform Enable Speaker command (0D1h)
  1269.       d) Setup DMA controller (mode = 048h + channel)
  1270.       e) Perform DMA DAC, 2-bit ADPCM Reference command (017h)
  1271.       f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
  1272.                                perform Generic EOI (020h) to appropriate PICs)
  1273.       g) Perform Disable Speaker command (0D3h)
  1274.  
  1275.     LENGTH = (SAMPLES-1 + 3)/4 + 1
  1276.  
  1277.     NOTES
  1278.      ■ Supports up to 11KHz on SoundBlaster 1.x
  1279.      ■ Ensoniq Soundscape does not support ADPCM.
  1280.  
  1281.     SEE ALSO
  1282.      0D0h   Halt DMA Operation, 8-bit
  1283.      0D4h   Continue DMA Operation, 8-bit
  1284.      ·····················································
  1285.      016h   DMA DAC, 2-bit ADPCM
  1286.      ·····················································
  1287.      075h   DMA DAC, 4-bit ADPCM Reference
  1288.      077h   DMA DAC, 2.6-bit ADPCM Reference
  1289. ------------------------------------------------------------------------------
  1290.  01Ch       Auto-Initialize DMA DAC, 8-bit                          SB2.0
  1291.     COMMAND
  1292.  
  1293.     DESCRIPTION
  1294.      Initiates auto-initialize 8-bit DMA transfer.
  1295.  
  1296.     PROCEDURE
  1297.       a) Install IRQ handler (hook vector, update PIC mask)
  1298.       b) Perform Set Time Constant command (040h), or otherwise set sample rate
  1299.       c) Perform Set DMA Block Size command (048h)
  1300.       d) Perform Enable Speaker command (0D1h)
  1301.       e) Setup DMA controller (mode = 058h + channel)
  1302.       f) Perform Auto-Initialize DMA DAC, 8-bit command (01Ch)
  1303.       g) IRQ: Prepare next half of buffer (not always in handler)
  1304.       h) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
  1305.                                perform Generic EOI (020h) to appropriate PICs)
  1306.       i) Loop to G until complete
  1307.       j) Perform Disable Speaker command (0D3h)
  1308.       k) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
  1309.       l) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
  1310.       m) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
  1311.  
  1312.     NOTES
  1313.      ■ Supports up to 23KHz (11.5KHz stereo???)
  1314.      ■ Exit auto-initialized mode by programming single-cycle DMA output or
  1315.         with Exit Auto-Initialize DMA Operation, 8-bit (0DAh).
  1316.      ■ Use command 0Cxh to avoid SoundBlaster 16 quantization errors.     
  1317.  
  1318.     LENGTH = (SAMPLES + 1)/2 - 1
  1319.  
  1320.     SEE ALSO
  1321.      048h   Set DMA Block Size                       
  1322.      ·····················································
  1323.      0D0h   Halt DMA Operation, 8-bit
  1324.      045h   Continue Auto-Initialize DMA Operation, 8-bit
  1325.      0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
  1326.      ·····················································
  1327.      090h   Auto-Initialize DMA DAC, 8-bit (High Speed) 
  1328.      0Cxh   Generic DAC/ADC DMA, 8-bit               
  1329. ------------------------------------------------------------------------------
  1330.  01Fh       Auto-Initialize DMA DAC, 2-bit ADPCM Reference          SB2.0
  1331.     COMMAND
  1332.  
  1333.     DESCRIPTION
  1334.      Initiates auto-initialize 2-bit ADPCM DMA transfer with reference byte.     
  1335.  
  1336.     PROCEDURE
  1337.       a) Install IRQ handler (hook vector, update PIC mask)
  1338.       b) Perform Set Time Constant command (040h), or otherwise set sample rate
  1339.       c) Perform Set DMA Block Size command (048h)
  1340.       d) Perform Enable Speaker command (0D1h)
  1341.       e) Setup DMA controller (mode = 058h + channel)
  1342.       f) Perform Auto-Initialize DMA DAC, 2-bit ADPCM command (01Fh)
  1343.       g) IRQ: Prepare next half of buffer (not always in handler)
  1344.       h) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
  1345.                                perform Generic EOI (020h) to appropriate PICs)
  1346.       i) Loop to G until complete
  1347.       j) Perform Disable Speaker command (0D3h)
  1348.       k) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
  1349.       l) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
  1350.       m) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
  1351.  
  1352.     NOTES
  1353.      ■ Exit auto-initialized mode by programming single-cycle DMA output or
  1354.         with Exit Auto-Initialize DMA Operation, 8-bit (0DAh).
  1355.      ■ Ensoniq Soundscape does not support ADPCM.     
  1356.  
  1357.     SAMPLEBYTES = (SAMPLES     + 3)/4 + 1
  1358.     LENGTH      = (SAMPLEBYTES + 1)/2 - 1
  1359.  
  1360.     SEE ALSO 
  1361.      048h   Set DMA Block Size                       
  1362.      ·····················································
  1363.      0D0h   Halt DMA Operation, 8-bit
  1364.      045h   Continue Auto-Initialize DMA Operation, 8-bit
  1365.      0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
  1366.      ·····················································
  1367.      017h   DMA DAC, 2-bit ADPCM Reference                     
  1368.      ·····················································
  1369.      07Dh   Auto-Initialize DMA DAC, 4-bit ADPCM Reference      
  1370.      07Fh   Auto-Initialize DMA DAC, 2.6-bit ADPCM Reference    
  1371. ------------------------------------------------------------------------------
  1372.  020h       Direct ADC, 8-bit                                       SB
  1373.     COMMAND <-SAMPLEBYTE
  1374.  
  1375.     DESCRIPTION
  1376.      Inputs single sample.
  1377.                                 
  1378.     PROCEDURE
  1379.       a) Send Direct ADC, 8-bit command (020h)
  1380.       b) Read sample
  1381.       c) Wait for correct timing    
  1382.  
  1383.     NOTES
  1384.      ■ Direct mode maximum sample rate is 23KHz.
  1385.  
  1386.     SEE ALSO
  1387.      010h   Direct DAC, 8-bit                           
  1388. ------------------------------------------------------------------------------
  1389.  024h       DMA ADC, 8-bit                                          SB
  1390.     COMMAND->LENGTHLOBYTE->LENGTHHIBYTE
  1391.  
  1392.     DESCRIPTION
  1393.      Initiates 8-bit DMA transfer (record).
  1394.  
  1395.     PROCEDURE
  1396.       a) Install IRQ handler (hook vector, update PIC mask)
  1397.       b) Perform Set Time Constant command (040h), or otherwise set sample rate
  1398.       c) Perform Enable Speaker command (0D1h)
  1399.       d) Setup DMA controller (mode = 044h + channel)
  1400.       e) Perform DMA ADC, 8-bit command (024h)
  1401.       f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
  1402.                                perform Generic EOI (020h) to appropriate PICs)
  1403.       g) Perform Disable Speaker command (0D3h)
  1404.  
  1405.     LENGTH = SAMPLES - 1
  1406.  
  1407.     NOTES
  1408.      ■ SoundBlasters prior to SB16 return the first sample in direct mode.
  1409.  
  1410.     SEE ALSO                 
  1411.      0D0h   Halt DMA Operation, 8-bit
  1412.      0D4h   Continue DMA Operation, 8-bit
  1413.      ·····················································
  1414.      02Ch   Auto-Initialize DMA ADC, 8-bit                    
  1415.      098h   Auto-Initialize DMA ADC, 8-bit (High Speed)
  1416.      0Cxh   Generic DAC/ADC DMA, 8-bit                  
  1417. ------------------------------------------------------------------------------
  1418.  028h       Direct ADC, 8-bit (Burst)                               SB-Pro2
  1419.     COMMAND <-SAMPLEBYTE0...SAMPLEBYTEn
  1420.  
  1421.     DESCRIPTION
  1422.      ???
  1423.  
  1424.     PROCEDURE
  1425.      ???
  1426.  
  1427.     NOTES
  1428.      ■ Terminate operation with DSP reset.
  1429.  
  1430.     SEE ALSO
  1431.      020h   Direct ADC, 8-bit
  1432. ------------------------------------------------------------------------------
  1433.  02Ch           Auto-Initialize DMA ADC, 8-bit                      SB2.0
  1434.     COMMAND
  1435.  
  1436.     DESCRIPTION
  1437.      Initiates auto-initialize 8-bit DMA transfer (record).
  1438.  
  1439.     PROCEDURE
  1440.       a) Install IRQ handler (hook vector, update PIC mask)
  1441.       b) Perform Set Time Constant command (040h), or otherwise set sample rate
  1442.       c) Perform Set DMA Block Size command (048h)
  1443.       d) Perform Enable Speaker command (0D1h)
  1444.       e) Setup DMA controller (mode = 054h + channel)
  1445.       f) Perform Auto-Initialize DMA ADC, 8-bit command (02Ch)
  1446.       g) IRQ: Prepare next half of buffer (not always in handler)
  1447.       h) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
  1448.                                perform Generic EOI (020h) to appropriate PICs)
  1449.       i) Loop to G until complete
  1450.       j) Perform Disable Speaker command (0D3h)
  1451.       k) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
  1452.       l) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
  1453.       m) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
  1454.  
  1455.     NOTES
  1456.      ■ Supports up to 23KHz (11.5KHz stereo???)
  1457.      ■ Exit auto-initialized mode by programming single-cycle DMA output or
  1458.         with Exit Auto-Initialize DMA Operation, 8-bit (0DAh).
  1459.      ■ Use command 0Cxh to avoid SoundBlaster 16 quantization errors.     
  1460.  
  1461.     LENGTH = (SAMPLES + 1)/2 - 1
  1462.  
  1463.     SEE ALSO
  1464.      048h   Set DMA Block Size                       
  1465.      ·····················································
  1466.      0D0h   Halt DMA Operation, 8-bit
  1467.      045h   Continue Auto-Initialize DMA Operation, 8-bit
  1468.      0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
  1469.      ·····················································
  1470.      098h   Auto-Initialize DMA ADC, 8-bit (High Speed)
  1471.      0Cxh   Generic DAC/ADC DMA, 8-bit               
  1472. ------------------------------------------------------------------------------
  1473.  030h       MIDI Read Poll                                          SB
  1474.     COMMAND <-MIDICODE
  1475.  
  1476.     DESCRIPTION
  1477.      Reads MIDI code.
  1478.  
  1479.     PROCEDURE
  1480.       a) Send MIDI Read Poll command (030h)
  1481.       b) Read MIDI code when available
  1482.  
  1483.     NOTES
  1484.      ■ SoundBlasters buffer up to 64bytes of MIDI data.
  1485.  
  1486.     SEE ALSO
  1487.      031h   MIDI Read Interrupt
  1488.      ·····················································
  1489.      032h   MIDI Read Timestamp Poll
  1490.      033h   MIDI Read Timestamp Interrupt
  1491.      ·····················································
  1492.      034h   MIDI Read Poll + Write Poll (UART)
  1493.      035h   MIDI Read Interrupt + Write Poll (UART)
  1494.      037h   MIDI Read Timestamp Interrupt + Write Poll (UART)
  1495.      ·····················································
  1496.      038h   MIDI Write Poll
  1497. ------------------------------------------------------------------------------
  1498.  031h       MIDI Read Interrupt                                     SB
  1499.     COMMAND {<-MIDICODE}
  1500.  
  1501.     DESCRIPTION
  1502.      Generates interrupt when MIDI code is available.
  1503.  
  1504.     PROCEDURE
  1505.       a) Install IRQ handler (hook vector, update PIC mask)
  1506.       b) Perform MIDI Read Interrupt command (031h)
  1507.       c) IRQ: Read MIDI code
  1508.       d) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
  1509.                                perform Generic EOI (020h) to appropriate PICs)
  1510.       e) Perform MIDI Read Interrupt command (031h) to terminate
  1511.  
  1512.     NOTES
  1513.      ■ SoundBlasters buffer up to 64bytes of MIDI data.
  1514.  
  1515.     SEE ALSO
  1516.      033h   MIDI Read Timestamp Interrupt
  1517.      ·····················································
  1518.      035h   MIDI Read Interrupt + Write Poll (UART)
  1519.      037h   MIDI Read Timestamp Interrupt + Write Poll (UART)
  1520.      ·····················································
  1521.      030h   MIDI Read Poll
  1522. -----------------------------------------------------------------------------
  1523.  032h       MIDI Read Timestamp Poll                                SB???
  1524.     COMMAND <-TIMESTAMPLOBYTE<-TIMESTAMPMIDBYTE<-TIMESTAMPHIBYTE<-MIDICODE
  1525.  
  1526.     DESCRIPTION
  1527.      Reads MIDI code with timestamp.
  1528.  
  1529.     PROCEDURE
  1530.       a) Send MIDI Read Timestamp Poll command (032h)
  1531.       b) Read timestamp and MIDI code when available
  1532.  
  1533.     NOTES
  1534.      ■ Timestamp if 24-bit value containing the time since the last MIDI
  1535.         command in milliseconds.
  1536.      ■ SoundBlasters buffer up to 64bytes of MIDI data.
  1537.  
  1538.     SEE ALSO
  1539.      033h   MIDI Read Timestamp Interrupt
  1540.      ·····················································
  1541.      037h   MIDI Read Timestamp Interrupt + Write Poll (UART)
  1542. ------------------------------------------------------------------------------
  1543.  033h       MIDI Read Timestamp Interrupt                           SB???
  1544.     COMMAND {<-TIMESTAMPLOBYTE<-TIMESTAMPMIDBYTE<-TIMESTAMPHIBYTE<-MIDICODE}
  1545.  
  1546.     DESCRIPTION
  1547.      Generates interrupt when MIDI code is available, includes timestamp.
  1548.  
  1549.     PROCEDURE
  1550.       a) Install IRQ handler (hook vector, update PIC mask)
  1551.       b) Perform MIDI Read Interrupt with Timestamp command (033h)
  1552.       c) IRQ: Read MIDI code with timestamp
  1553.       d) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
  1554.                                perform Generic EOI (020h) to appropriate PICs)
  1555.       e) Perform MIDI Read Interrupt with Timestamp command (033h) to terminate
  1556.  
  1557.     NOTES
  1558.      ■ Timestamp if 24-bit value containing the time since the last MIDI
  1559.         command in milliseconds.
  1560.      ■ SoundBlasters buffer up to 64bytes of MIDI data.
  1561.  
  1562.     SEE ALSO
  1563.      032h   MIDI Read Timestamp Poll
  1564.      ·····················································
  1565.      037h   MIDI Read Timestamp Interrupt + Write Poll (UART)
  1566. ------------------------------------------------------------------------------
  1567.  034h       MIDI Read Poll + Write Poll (UART)                      SB2.0
  1568.     COMMAND [->MIDICODE] [<-MIDICODE]
  1569.  
  1570.     DESCRIPTION
  1571.      Enables UART mode, where all DSP read/writes are interpreted as MIDI codes.
  1572.  
  1573.     PROCEDURE
  1574.       a) Send MIDI Read Poll + Write Poll (UART) command (034h)
  1575.       b) Send and receive MIDI codes
  1576.       c) Reset DSP to terminate
  1577.  
  1578.     NOTES
  1579.      ■ Disable UART mode with DSP reset (port 02x06h)
  1580.      ■ Read/write status must still be checked (port 02x0Eh/02x0Ch)
  1581.      ■ SoundBlasters buffer up to 64bytes of MIDI data.
  1582.  
  1583.     SEE ALSO
  1584.      030h   MIDI Read Poll
  1585.      038h   MIDI Write Poll
  1586.      ·····················································
  1587.      035h   MIDI Read Interrupt + Write Poll (UART)
  1588.      037h   MIDI Read Timestamp Interrupt + Write Poll (UART)
  1589. ------------------------------------------------------------------------------
  1590.  035h       MIDI Read Interrupt + Write Poll (UART)                 SB2.0???
  1591.     COMMAND [->MIDICODE] {<-MIDICODE}
  1592.  
  1593.     DESCRIPTION
  1594.      Enables UART mode with interrupt, where all DSP writes are interpreted as
  1595.       MIDI codes and interrupts are generated when a MIDI code is to be read.
  1596.  
  1597.     PROCEDURE
  1598.       a) Send MIDI Read Interrupt + Write Poll (UART) command (035h)
  1599.       b) Send and receive MIDI codes (see command 031h)
  1600.       c) Reset DSP to terminate
  1601.  
  1602.     NOTES
  1603.      ■ Disable UART mode with DSP reset (port 02x06h)
  1604.      ■ Write buffer status must still be checked (port 02x0Ch)
  1605.      ■ SoundBlasters buffer up to 64bytes of MIDI data.
  1606.  
  1607.     SEE ALSO
  1608.      034h   MIDI Read Poll + Write Poll (UART)
  1609.      037h   MIDI Read Timestamp Interrupt + Write Poll (UART)
  1610.      ·····················································
  1611.      031h   MIDI Read Interrupt
  1612. ------------------------------------------------------------------------------
  1613.  037h       MIDI Read Timestamp Interrupt + Write Poll (UART)       SB2.0???
  1614.     COMMAND [->MIDICODE]
  1615.              {<-TIMESTAMPLOBYTE<-TIMESTAMPMIDBYTE<-TIMESTAMPHIBYTE<-MIDICODE}
  1616.  
  1617.     DESCRIPTION
  1618.      Enables UART mode with interrupt, where all DSP writes are interpreted as
  1619.       MIDI codes and interrupts are generated when a timestamped MIDI code is
  1620.       to be read.
  1621.  
  1622.     PROCEDURE
  1623.       a) Send MIDI Read Timestamp Interrupt + Write Poll (UART) command (037h)
  1624.       b) Send and receive MIDI codes with timestamps (see command 033h)
  1625.       c) Reset DSP to terminate
  1626.  
  1627.     NOTES
  1628.      ■ Disable UART mode with DSP reset (port 02x06h)
  1629.      ■ Write buffer status must still be checked (port 02x0Ch)
  1630.      ■ SoundBlasters buffer up to 64bytes of MIDI data.
  1631.  
  1632.     SEE ALSO
  1633.      034h   MIDI Read Poll + Write Poll (UART)
  1634.      035h   MIDI Read Interrupt + Write Poll (UART)
  1635.      ·····················································
  1636.      038h   MIDI Write Poll
  1637. ------------------------------------------------------------------------------
  1638.  038h       MIDI Write Poll                                         SB
  1639.     COMMAND->MIDICODE
  1640.  
  1641.     DESCRIPTION
  1642.      Writes MIDI code.
  1643.  
  1644.     PROCEDURE
  1645.       a) Send MIDI Write Poll command (038h) and data
  1646.  
  1647.     SEE ALSO
  1648.      034h   MIDI Read Poll + Write Poll (UART)
  1649.      035h   MIDI Read Interrupt + Write Poll (UART)
  1650.      037h   MIDI Read Timestamp Interrupt + Write Poll (UART)
  1651.      ·····················································
  1652.      030h   MIDI Read Poll
  1653. ------------------------------------------------------------------------------
  1654.  040h       Set Time Constant                                       SB
  1655.     COMMAND->TIMEBYTE
  1656.  
  1657.     DESCRIPTION
  1658.      Sets sample rate through internal I/O transfer timer.
  1659.  
  1660.     FORMULA
  1661.      TimeConstant = 256 - (1000000 / (SampleChannels * SampleRate))
  1662.  
  1663.     NOTES
  1664.      ■ For non-SoundBlaster Pro cards, always set SampleChannels equal to one.
  1665.  
  1666.     SEE ALSO
  1667.      041h   Set Sample Rate
  1668. ------------------------------------------------------------------------------
  1669.  041h       Set Sample Rate                                         SB16
  1670.     COMMAND->RATEHIBYTE->RATELOBYTE
  1671.  
  1672.     DESCRIPTION
  1673.      Sets sample rate.
  1674.  
  1675.     NOTES
  1676.      ■ Sampling rate precision is truncated to nearest time constant.
  1677.      ■ Sampling rate is programmed independent of stereo or monaural modes.
  1678.  
  1679.     SEE ALSO
  1680.      040h   Set Time Constant
  1681. ------------------------------------------------------------------------------
  1682.  045h       Continue Auto-Initialize DMA, 8-bit                     SB16
  1683.     COMMAND
  1684.  
  1685.     DESCRIPTION
  1686.      Continues a halted auto-initialized 8-bit DMA operation.
  1687.  
  1688.     SEE ALSO
  1689.      0DAh   Exit Auto-Initialize DMA Operation, 8-bit
  1690.      ·····················································
  1691.      0Cxh   Generic DAC/ADC, 8-bit
  1692.      ·····················································
  1693.      01Ch   Auto-Initialize DMA DAC,   8-bit
  1694.      01Fh   Auto-Initialize DMA DAC,   2-bit ADPCM
  1695.      02Ch   Auto-Initialize DMA ADC,   8-bit
  1696.      07Dh   Auto-Initialize DMA DAC,   4-bit ADPCM
  1697.      07Fh   Auto-Initialize DMA DAC, 2.6-bit ADPCM
  1698.      090h   Auto-Initialize DMA DAC,   8-bit (High Speed)
  1699.      098h   Auto-Initialize DMA ADC,   8-bit (High Speed)
  1700. ------------------------------------------------------------------------------
  1701.  047h       Continue Auto-Initialize DMA, 16-bit                    SB16
  1702.     COMMAND
  1703.  
  1704.     DESCRIPTION
  1705.      Continues a halted auto-initialized 16-bit DMA operation.
  1706.  
  1707.     SEE ALSO
  1708.      0D9h   Exit Auto-Initialize DMA, 16-bit
  1709.      ·····················································
  1710.      0Bxh   Generic DAC/ADC, 16-bit
  1711. ------------------------------------------------------------------------------
  1712.  048h       Set DMA Block Size                                      SB2.0
  1713.     COMMAND->LENGTHLOBYTE->LENGTHHIBYTE
  1714.  
  1715.     DESCRIPTION
  1716.      Set DMA transfer size for auto-initialize and high speed modes.
  1717.  
  1718.     SAMPLEBYTES =  SAMPLES                    8-bit
  1719.                   (SAMPLES-1   + 1)/2 + 1     4-bit ADPCM + Reference
  1720.                   (SAMPLES-1   + 2)/3 + 1   2.6-bit ADPCM + Reference
  1721.                   (SAMPLES-1   + 3)/4 + 1     2-bit ADPCM + Reference
  1722.  
  1723.     LENGTH      =  SAMPLEBYTES        - 1  (Single Cycle)
  1724.                   (SAMPLEBYTES + 1)/2 - 1  (Auto-Init   )
  1725.  
  1726.     NOTES
  1727.      ■ Length is always equal to the number of bytes to transfer minus one.
  1728.  
  1729.     SEE ALSO
  1730.      01Ch   Auto-Initialize DMA DAC,   8-bit
  1731.      01Fh   Auto-Initialize DMA DAC,   2-bit ADPCM
  1732.      02Ch   Auto-Initialize DMA ADC,   8-bit
  1733.      07Dh   Auto-Initialize DMA DAC,   4-bit ADPCM
  1734.      07Fh   Auto-Initialize DMA DAC, 2.6-bit ADPCM
  1735.      090h   Auto-Initialize DMA DAC,   8-bit (High Speed)
  1736.      098h   Auto-Initialize DMA ADC,   8-bit (High Speed)
  1737. ------------------------------------------------------------------------------
  1738.  074h       DMA DAC, 4-bit ADPCM                                    SB
  1739.     COMMAND->LENGTHLOBYTE->LENGTHHIBYTE
  1740.  
  1741.     DESCRIPTION
  1742.      Initiates 4-bit ADPCM DMA transfer with accumulated reference byte.
  1743.     This operation uses 8-bit DMA mode.
  1744.  
  1745.     PROCEDURE (after command 075h)
  1746.       a) Install IRQ handler (hook vector, update PIC mask)
  1747.       b) Perform Set Time Constant command (040h), or otherwise set sample rate
  1748.       c) Perform Enable Speaker command (0D1h)
  1749.       d) Setup DMA controller (mode = 048h + channel)
  1750.       e) Perform DMA DAC, 4-bit ADPCM command (074h)
  1751.       f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
  1752.                                perform Generic EOI (020h) to appropriate PICs)
  1753.       g) Perform Disable Speaker command (0D3h)
  1754.  
  1755.     LENGTH      = (SAMPLES-1   + 1)/2
  1756.  
  1757.     NOTES
  1758.      ■ Supports up to 12KHz on SoundBlaster 1.x  
  1759.      ■ Ensoniq Soundscape does not support ADPCM.
  1760.                                                           
  1761.     SEE ALSO
  1762.      0D0h   Halt DMA Operation, 8-bit
  1763.      0D4h   Continue DMA Operation, 8-bit
  1764.      ·····················································
  1765.      074h   DMA DAC, 4-bit ADPCM Reference
  1766.      ·····················································
  1767.      016h   DMA DAC, 2-bit ADPCM
  1768.      076h   DMA DAC, 2.6-bit ADPCM
  1769. ------------------------------------------------------------------------------
  1770.  075h       DMA DAC, 4-bit ADPCM Reference                          SB
  1771.     COMMAND->LENGTHLOBYTE->LENGTHHIBYTE
  1772.  
  1773.     DESCRIPTION
  1774.      Initiates 4-bit ADPCM DMA transfer with new reference byte.  This
  1775.     operation uses 8-bit DMA mode.
  1776.  
  1777.     PROCEDURE
  1778.       a) Install IRQ handler (hook vector, update PIC mask)
  1779.       b) Perform Set Time Constant command (040h), or otherwise set sample rate
  1780.       c) Perform Enable Speaker command (0D1h)
  1781.       d) Setup DMA controller (mode = 048h + channel)
  1782.       e) Perform DMA DAC, 4-bit ADPCM Reference command (075h)
  1783.       f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
  1784.                                perform Generic EOI (020h) to appropriate PICs)
  1785.       g) Perform Disable Speaker command (0D3h)
  1786.  
  1787.     LENGTH      = (SAMPLES-1   + 1)/2 + 1
  1788.  
  1789.     NOTES
  1790.      ■ Supports up to 12KHz on SoundBlaster 1.x  
  1791.      ■ Ensoniq Soundscape does not support ADPCM.
  1792.  
  1793.     SEE ALSO
  1794.      0D0h   Halt DMA Operation, 8-bit
  1795.      0D4h   Continue DMA Operation, 8-bit
  1796.      ·····················································
  1797.      075h   DMA DAC, 4-bit ADPCM
  1798.      ·····················································
  1799.      017h   DMA DAC, 2-bit ADPCM Reference
  1800.      077h   DMA DAC, 2.6-bit ADPCM Reference
  1801. ------------------------------------------------------------------------------
  1802.  076h       DMA DAC, 2.6-bit ADPCM                                  SB
  1803.     COMMAND->LENGTHLOBYTE->LENGTHHIBYTE
  1804.  
  1805.     DESCRIPTION
  1806.      Initiates 2.6-bit ADPCM DMA transfer with accumulated reference byte.
  1807.     This operation uses 8-bit DMA mode.
  1808.  
  1809.     PROCEDURE (after command 077h)
  1810.       a) Install IRQ handler (hook vector, update PIC mask)
  1811.       b) Perform Set Time Constant command (040h), or otherwise set sample rate
  1812.       c) Perform Enable Speaker command (0D1h)
  1813.       d) Setup DMA controller (mode = 048h + channel)
  1814.       e) Perform DMA DAC, 2.6-bit ADPCM command (076h)
  1815.       f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
  1816.                                perform Generic EOI (020h) to appropriate PICs)
  1817.       g) Perform Disable Speaker command (0D3h)
  1818.  
  1819.     LENGTH      = (SAMPLES-1   + 2)/3
  1820.  
  1821.     NOTES
  1822.      ■ Supports up to 13KHz on SoundBlaster 1.x  
  1823.      ■ Ensoniq Soundscape does not support ADPCM.
  1824.  
  1825.     SEE ALSO
  1826.      0D0h   Halt DMA Operation, 8-bit
  1827.      0D4h   Continue DMA Operation, 8-bit
  1828.      ·····················································
  1829.      077h   DMA DAC, 2.6-bit ADPCM Reference
  1830.      ·····················································
  1831.      016h   DMA DAC, 2-bit ADPCM
  1832.      074h   DMA DAC, 4-bit ADPCM
  1833. ------------------------------------------------------------------------------
  1834.  077h       DMA DAC, 2.6-bit ADPCM Reference                        SB
  1835.     COMMAND->LENGTHLOBYTE->LENGTHHIBYTE
  1836.  
  1837.     DESCRIPTION
  1838.      Initiates 2.6-bit ADPCM DMA transfer with new reference byte.  This
  1839.     operation uses 8-bit DMA mode.
  1840.  
  1841.     PROCEDURE
  1842.       a) Install IRQ handler (hook vector, update PIC mask)
  1843.       b) Perform Set Time Constant command (040h), or otherwise set sample rate
  1844.       c) Perform Enable Speaker command (0D1h)
  1845.       d) Setup DMA controller (mode = 048h + channel)
  1846.       e) Perform DMA DAC, 2.6-bit ADPCM Reference command (077h)
  1847.       f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
  1848.                                perform Generic EOI (020h) to appropriate PICs)
  1849.       g) Perform Disable Speaker command (0D3h)
  1850.  
  1851.     LENGTH      = (SAMPLES-1   + 2)/3 + 1
  1852.  
  1853.     NOTES
  1854.      ■ Supports up to 13KHz on SoundBlaster 1.x  
  1855.      ■ Ensoniq Soundscape does not support ADPCM.
  1856.  
  1857.     SEE ALSO
  1858.      0D0h   Halt DMA Operation, 8-bit
  1859.      0D4h   Continue DMA Operation, 8-bit
  1860.      ·····················································
  1861.      076h   DMA DAC, 2.6-bit ADPCM
  1862.      ·····················································
  1863.      017h   DMA DAC, 2-bit ADPCM Reference
  1864.      075h   DMA DAC, 4-bit ADPCM Reference
  1865. ------------------------------------------------------------------------------
  1866.  07Dh       Auto-Initialize DMA DAC, 4-bit ADPCM Reference          SB2.0
  1867.     COMMAND
  1868.  
  1869.     DESCRIPTION
  1870.      Initiates auto-initialize 4-bit ADPCM DMA transfer with reference byte.         
  1871.  
  1872.     PROCEDURE
  1873.       a) Install IRQ handler (hook vector, update PIC mask)
  1874.       b) Perform Set Time Constant command (040h), or otherwise set sample rate
  1875.       c) Perform Set DMA Block Size command (048h)
  1876.       d) Perform Enable Speaker command (0D1h)
  1877.       e) Setup DMA controller (mode = 058h + channel)
  1878.       f) Perform Auto-Initialize DMA DAC, 4-bit ADPCM command (07Dh)
  1879.       g) IRQ: Prepare next half of buffer (not always in handler)
  1880.       h) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
  1881.                                perform Generic EOI (020h) to appropriate PICs)
  1882.       i) Loop to G until complete
  1883.       j) Perform Disable Speaker command (0D3h)
  1884.       k) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
  1885.       l) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
  1886.       m) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
  1887.  
  1888.     NOTES
  1889.      ■ Exit auto-initialized mode by programming single-cycle DMA output or
  1890.         with Exit Auto-Initialize DMA Operation, 8-bit (0DAh).
  1891.      ■ Ensoniq Soundscape does not support ADPCM.
  1892.  
  1893.     SAMPLEBYTES = (SAMPLES     + 1)/2 + 1
  1894.     LENGTH      = (SAMPLEBYTES + 1)/2 - 1
  1895.  
  1896.     SEE ALSO     
  1897.      048h   Set DMA Block Size                       
  1898.      ·····················································
  1899.      0D0h   Halt DMA Operation, 8-bit
  1900.      045h   Continue Auto-Initialize DMA Operation, 8-bit
  1901.      0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
  1902.      ·····················································
  1903.      075h   DMA DAC, 4-bit ADPCM Reference                   
  1904.      ·····················································
  1905.      01Fh   Auto-Initialize DMA DAC, 2-bit ADPCM Reference      
  1906.      07Fh   Auto-Initialize DMA DAC, 2.6-bit ADPCM Reference    
  1907. ------------------------------------------------------------------------------
  1908.  07Fh       Auto-Initialize DMA DAC, 2.6-bit ADPCM Reference        SB2.0
  1909.     COMMAND
  1910.  
  1911.     DESCRIPTION
  1912.      Initiates auto-initialize 2.6-bit ADPCM DMA transfer with reference byte.          
  1913.  
  1914.     PROCEDURE
  1915.       a) Install IRQ handler (hook vector, update PIC mask)
  1916.       b) Perform Set Time Constant command (040h), or otherwise set sample rate
  1917.       c) Perform Set DMA Block Size command (048h)
  1918.       d) Perform Enable Speaker command (0D1h)
  1919.       e) Setup DMA controller (mode = 058h + channel)
  1920.       f) Perform Auto-Initialize DMA DAC, 2.6-bit ADPCM command (07Fh)
  1921.       g) IRQ: Prepare next half of buffer (not always in handler)
  1922.       h) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
  1923.                                perform Generic EOI (020h) to appropriate PICs)
  1924.       i) Loop to G until complete
  1925.       j) Perform Disable Speaker command (0D3h)
  1926.       k) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
  1927.       l) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
  1928.       m) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
  1929.  
  1930.     NOTES
  1931.      ■ Exit auto-initialized mode by programming single-cycle DMA output or
  1932.         with Exit Auto-Initialize DMA Operation, 8-bit (0DAh).
  1933.      ■ Ensoniq Soundscape does not support ADPCM.    
  1934.  
  1935.     SAMPLEBYTES = (SAMPLES     + 2)/3 + 1
  1936.     LENGTH      = (SAMPLEBYTES + 1)/2 - 1
  1937.  
  1938.     SEE ALSO
  1939.      048h   Set DMA Block Size                       
  1940.      ·····················································
  1941.      0D0h   Halt DMA Operation, 8-bit
  1942.      045h   Continue Auto-Initialize DMA Operation, 8-bit
  1943.      0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
  1944.      ·····················································
  1945.      077h   DMA DAC, 2.6-bit ADPCM Reference            
  1946.      ·····················································
  1947.      01Fh   Auto-Initialize DMA DAC, 2-bit ADPCM Reference      
  1948.      07Dh   Auto-Initialize DMA DAC, 4-bit ADPCM Reference      
  1949. ------------------------------------------------------------------------------
  1950.  080h       Silence DAC                                             SB
  1951.     COMMAND->LENGTHLOBYTE->LENGTHHIBYTE
  1952.  
  1953.     DESCRIPTION
  1954.      Outputs block of silent samples at current sample rate, and signals
  1955.       IRQ when complete.
  1956.  
  1957.     PROCEDURE
  1958.       a) Install IRQ handler (hook vector, update PIC mask)
  1959.       b) Perform Set Time Constant command (040h), or otherwise set sample rate
  1960.       c) Perform Silence DAC command (080h)
  1961.       d) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
  1962.                                perform Generic EOI (020h) to appropriate PICs)
  1963.       e) Remove IRQ handler (restore vector, restore PIC mask)
  1964.  
  1965.     LENGTH = SAMPLES - 1
  1966.  
  1967.     SEE ALSO
  1968.      040h   Set Time Constant
  1969. ------------------------------------------------------------------------------
  1970.  090h       Auto-Initialize DMA DAC, 8-bit (High Speed)             SB2.0-Pro2
  1971.     COMMAND
  1972.  
  1973.     DESCRIPTION
  1974.      Initiates 8-bit DMA transfer (>23KHz).
  1975.  
  1976.     PROCEDURE
  1977.       a) Install IRQ handler (hook vector, update PIC mask)
  1978.       b) Perform Set Time Constant command (040h), or otherwise set sample rate
  1979.       c) Perform Set DMA Block Size command (048h)
  1980.       d) Perform Enable Speaker command (0D1h)
  1981.       e) Setup DMA controller (mode = 058h + channel)
  1982.       f) Perform Auto-Initialize DMA DAC, 8-bit (HighSpeed) command (090h)
  1983.       g) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
  1984.                                perform Generic EOI (020h) to appropriate PICs)
  1985.       h) Reset DSP (or terminate normally on SB16+)
  1986.  
  1987.     NOTES
  1988.      ■ High speed mode ignores DSP commands during transfers (<SB16).
  1989.      ■ Use command 0Cxh to avoid SoundBlaster 16 quantization errors.
  1990.  
  1991.     SEE ALSO
  1992.      048h   Set DMA Block Size                       
  1993.      ·····················································
  1994.      0D0h   Halt DMA Operation, 8-bit
  1995.      045h   Continue Auto-Initialize DMA Operation, 8-bit
  1996.      0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
  1997.      ·····················································
  1998.      01Ch   Auto-Initialize DMA DAC, 8-bit
  1999.      0Cxh   Generic DAC/ADC DMA, 8-bit               
  2000. ------------------------------------------------------------------------------
  2001.  098h       Auto-Initialize DMA ADC, 8-bit (High Speed)             SB2.0-Pro2
  2002.     COMMAND
  2003.  
  2004.     DESCRIPTION
  2005.      Initiates 8-bit DMA transfer (record, >23KHz).
  2006.  
  2007.     PROCEDURE
  2008.       a) Install IRQ handler (hook vector, update PIC mask)
  2009.       b) Perform Set Time Constant command (040h), or otherwise set sample rate
  2010.       c) Perform Set DMA Block Size command (048h)
  2011.       d) Perform Enable Speaker command (0D1h)
  2012.       e) Setup DMA controller (mode = 054h + channel)
  2013.       f) Perform Auto-Initialize DMA ADC, 8-bit (HighSpeed) command (098h)
  2014.       g) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
  2015.                                perform Generic EOI (020h) to appropriate PICs)
  2016.       h) Reset DSP (or terminate normally on SB16+)
  2017.  
  2018.     NOTES
  2019.      ■ High speed mode ignores DSP commands during transfers (<SB16).
  2020.  
  2021.     SEE ALSO
  2022.      048h   Set DMA Block Size                       
  2023.      ·····················································
  2024.      0D0h   Halt DMA Operation, 8-bit
  2025.      045h   Continue Auto-Initialize DMA Operation, 8-bit
  2026.      0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
  2027.      ·····················································
  2028.      02Ch   Auto-Initialize DMA ADC, 8-bit
  2029.      0Cxh   Generic DAC/ADC DMA, 8-bit               
  2030. ------------------------------------------------------------------------------
  2031.  0A0h       Disable Stereo Input Mode                               SBPro Only
  2032.     COMMAND
  2033.  
  2034.     DESCRIPTION
  2035.      Selects monaural input mode on SoundBlaster Pro.
  2036.  
  2037.     NOTES
  2038.      ■ Monaural input mode is default.
  2039.      ■ SoundBlaster 16 uses command 0Bxh/0Cxh for stereo input.
  2040.  
  2041.     SEE ALSO
  2042.      0A8h   Enable Stereo Input Mode
  2043.      ·····················································
  2044.      0F1h   DSP Auxiliary Status (Obsolete)
  2045. ------------------------------------------------------------------------------
  2046.  0A8h       Enable Stereo Input Mode                                SBPro Only
  2047.     COMMAND
  2048.  
  2049.     DESCRIPTION
  2050.      Selects stereo input mode on SoundBlaster Pro.
  2051.  
  2052.     NOTES
  2053.      ■ Monaural input mode is default.
  2054.      ■ SoundBlaster 16 uses command 0Bxh/0Cxh for stereo input.
  2055.      ■ BUG: Stereo input mode results in playback static.
  2056.  
  2057.     SEE ALSO
  2058.      0A0h   Disable Stereo Input Mode
  2059.      ·····················································
  2060.      0F1h   DSP Auxiliary Status (Obsolete)
  2061. ------------------------------------------------------------------------------
  2062.  0Bxh/0Cxh  Generic DAC/ADC DMA (16-bit, 8-bit)                     SB16
  2063.     COMMAND->MODE->LENGTHLOBYTE->LENGTHHIBYTE
  2064.  
  2065.     DESCRIPTION
  2066.      Generalized sampling and playback command (includes 16-bit operations).
  2067.  
  2068.     PROCEDURE
  2069.       a) Install IRQ handler (hook vector, update PIC mask)
  2070.       b) Perform Set Time Constant command (040h), or otherwise set sample rate
  2071.       c) Setup DMA controller (mode = mode + channel)
  2072.       d) Perform Generic DAC/ADC DMA command (0Bxh/0Cxh)
  2073.       e) IRQ: Acknowledge IRQ (input from IRQ Acknowledge port - 02x0Eh/02x0Fh;
  2074.                                perform Generic EOI (020h) to appropriate PICs)
  2075.       f) Terminate transfer, method dependent on mode
  2076.  
  2077.     COMMAND BYTE
  2078.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  2079.      ║(7)│(6)│(5)│(4)│ 3 │ 2 │ 1 │[0]║
  2080.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  2081.        │   │   │   │   │   │   │   └─── Reserved (0)
  2082.        │   │   │   │   │   │   └─────── FIFO Mode (0 = Disable, 1 = Enable)
  2083.        │   │   │   │   │   └─────────── DMA Mode  (0 = Single, 1 = Auto-Init)
  2084.        │   │   │   │   └─────────────── Transfer Mode (0 = DAC, 1 = ADC)
  2085.        │   │   │   └─────────────────┐
  2086.        │   │   └─────────────────────┼─ Sampling Resolution
  2087.        │   └─────────────────────────┤   1011b = 16-bit, 1100b = 8-bit
  2088.        └─────────────────────────────┘
  2089.  
  2090.     MODE BYTE
  2091.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  2092.      ║[7]│[6]│ 5 │ 4 │[3]│[2]│[1]│[0]║
  2093.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  2094.        │   │   │   │   │   │   │   └─┬─ Reserved (0)
  2095.        │   │   │   │   │   │   └─────┤
  2096.        │   │   │   │   │   └─────────┤
  2097.        │   │   │   │   └─────────────┘
  2098.        │   │   │   └─────────────────── Sample Mode (0 = Unsigned, 1 = Signed)
  2099.        │   │   └─────────────────────── Stereo Mode (0 = Monaural, 1 = Stereo)
  2100.        │   └─────────────────────────┬─ Reserved (0)
  2101.        └─────────────────────────────┘
  2102.  
  2103.     LENGTH = SAMPLES - 1        (even for 16-bit samples)
  2104.  
  2105.     NOTES
  2106.      ■ Enable FIFO mode for high speed mode or large data transfers.
  2107.      ■ BUG: SoundBlaster 16 ADC only accurate to 12-bits.
  2108.  
  2109.     SEE ALSO
  2110.      0D0h   Halt DMA Operation, 8-bit
  2111.      0D4h   Continue DMA Operation, 8-bit
  2112.      045h   Continue Auto-Initialize DMA Operation, 8-bit
  2113.      0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
  2114.      ·····················································
  2115.      0D5h   Halt DMA Operation, 16-bit
  2116.      0D6h   Continue DMA Operation, 16-bit
  2117.      047h   Continue Auto-Initialize DMA, 16-bit
  2118.      0D9h   Exit Auto-Initialize DMA Operation, 16-bit
  2119.      ·····················································
  2120.      014h   DMA DAC, 8-bit
  2121.      024h   DMA ADC, 8-bit
  2122.      ·····················································
  2123.      01Ch   Auto-Initialize DMA DAC, 8-bit
  2124.      02Ch   Auto-Initialize DMA ADC, 8-bit
  2125.      ·····················································
  2126.      090h   Auto-Initialize DMA DAC, 8-bit (High Speed)
  2127.      098h   Auto-Initialize DMA ADC, 8-bit (High Speed)
  2128. ------------------------------------------------------------------------------
  2129.  0D0h       Halt DMA Operation, 8-bit                               SB
  2130.     COMMAND
  2131.  
  2132.     DESCRIPTION
  2133.      Pauses 8-bit single-cycle DMA operation.
  2134.  
  2135.     NOTES
  2136.      ■ Halts every 8-bit DMA mode on SoundBlaster 16.              
  2137.      ■ BUG: Halts 16-bit DMA operation on early SoundBlaster 16s (4.04).     
  2138.  
  2139.     SEE ALSO
  2140.      0D4h   Continue DMA Operation, 8-bit             
  2141.      0DAh   Exit Auto-Initialize DMA Operation, 8-bit 
  2142. ------------------------------------------------------------------------------
  2143.  0D1h       Enable Speaker                                          SB
  2144.     COMMAND
  2145.  
  2146.     DESCRIPTION
  2147.      Enables speaker output.
  2148.  
  2149.     NOTES
  2150.      ■ Reset of DSP disables speaker.
  2151.      ■ BUG: Halts pending DMA operations on SoundBlaster 1.x.
  2152.      ■ BUG: Enabled speaker generates sampling noise on SoundBlaster 2.0.
  2153.      ■ BUG: Speaker MUST be disabled before sampling on SoundBlaster Pro.
  2154.      ■ BUG: Speaker state does NOT physically change on SoundBlaster 16.
  2155.      ■ Originator of noisy 'pops' on some models (capacitor discharge).            
  2156.  
  2157.     SEE ALSO
  2158.      0D3h   Disable Speaker
  2159. ------------------------------------------------------------------------------
  2160.  0D3h       Disable Speaker                                         SB
  2161.     COMMAND
  2162.  
  2163.     DESCRIPTION
  2164.      Disables speaker output.  
  2165.  
  2166.     NOTES    
  2167.      ■ Reset of DSP disables speaker.
  2168.      ■ BUG: Halts pending DMA operations on SoundBlaster 1.x.
  2169.      ■ BUG: Enabled speaker generates sampling noise on SoundBlaster 2.0.
  2170.      ■ BUG: Speaker MUST be disabled before sampling on SoundBlaster Pro.
  2171.      ■ BUG: Speaker state does NOT physically change on SoundBlaster 16.
  2172.      ■ Originator of noisy 'pops' on some models (capacitor discharge).            
  2173.  
  2174.     SEE ALSO
  2175.      0D1h   Enable Speaker
  2176. ------------------------------------------------------------------------------
  2177.  0D4h       Continue DMA Operation, 8-bit                           SB
  2178.     COMMAND
  2179.  
  2180.     DESCRIPTION
  2181.      Continues a halted 8-bit single-cycle DMA operation.
  2182.  
  2183.     NOTES
  2184.      ■ Continues every 8-bit DMA mode on SoundBlaster 16.           
  2185.      ■ BUG: Continues 16-bit DMA operation on early SoundBlaster 16 (4.04).     
  2186.  
  2187.     SEE ALSO
  2188.      0D0h   Halt DMA Operation, 8-bit                 
  2189.      0DAh   Exit Auto-Initialize DMA Operation, 8-bit 
  2190. ------------------------------------------------------------------------------
  2191.  0D5h       Halt DMA Operation, 16-bit                              SB16
  2192.     COMMAND
  2193.  
  2194.     DESCRIPTION
  2195.      Pauses any 16-bit DMA operation.                        
  2196.  
  2197.     SEE ALSO
  2198.      0D6h   Continue DMA Operation, 16-bit                              
  2199.      0D9h   Exit Auto-Initialize DMA Operation, 16-bit              
  2200. ------------------------------------------------------------------------------
  2201.  0D6h       Continue DMA Operation, 16-bit                          SB16
  2202.     COMMAND
  2203.  
  2204.     DESCRIPTION
  2205.      Continues any halted 16-bit DMA operation.
  2206.  
  2207.     SEE ALSO
  2208.      0D5h   Halt DMA Operation, 16-bit
  2209.      0D9h   Exit Auto-Initialize DMA Operation, 16-bit              
  2210. ------------------------------------------------------------------------------
  2211.  0D8h       Speaker Status                                          SB
  2212.     COMMAND <-STATUS
  2213.  
  2214.     DESCRIPTION
  2215.      Determines current status of speaker.
  2216.  
  2217.     STATUS BYTE
  2218.      000h = Disabled
  2219.      0FFh = Enabled
  2220.  
  2221.     NOTES
  2222.      ■ Reset of DSP disables speaker.
  2223.  
  2224.     SEE ALSO
  2225.      0D1h   Enable Speaker
  2226.      0D3h   Disable Speaker
  2227.      ·····················································
  2228.      004h   DSP Status (Obsolete)
  2229.      0F1h   DSP Auxiliary Status (Obsolete)
  2230.      ·····················································
  2231.      0FBh   DSP Status
  2232.      0FCh   DSP Auxiliary Status
  2233.      0FDh   DSP Command Status
  2234. ------------------------------------------------------------------------------
  2235.  0D9h       Exit Auto-Initialize DMA Operation, 16-bit              SB16
  2236.     COMMAND
  2237.  
  2238.     DESCRIPTION
  2239.      Terminates auto-initialized 16-bit DMA operation after current block.
  2240.  
  2241.     PROCEDURE                                  
  2242.       a) Perform Disable Speaker command (0D3h)
  2243.       b) Perform Halt DMA Operation, 16-bit command (0D5h - virtual speaker)
  2244.       c) Perform Exit Auto-Initialize DMA Operation, 16-bit command (0D9h)
  2245.       d) Perform Halt DMA Operation, 16-bit command (0D5h - virtual speaker)
  2246.              
  2247.     NOTES
  2248.      ■ Halt commands are required for immediate termination and to quiet SB16.
  2249.  
  2250.     SEE ALSO                                              
  2251.      0D5h   Halt DMA Operation, 16-bit
  2252.      047h   Continue Auto-Initialize DMA, 16-bit
  2253.      ·····················································
  2254.      0D3h   Disable Speaker
  2255. ------------------------------------------------------------------------------
  2256.  0DAh       Exit Auto-Initialize DMA Operation, 8-bit               SB2.0
  2257.     COMMAND
  2258.  
  2259.     DESCRIPTION
  2260.      Terminates auto-initialized 8-bit DMA operations after current block.
  2261.  
  2262.     PROCEDURE                                  
  2263.       a) Perform Disable Speaker command (0D3h)
  2264.       b) Perform Halt DMA Operation, 8-bit command (0D0h - virtual speaker)
  2265.       c) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
  2266.       d) Perform Halt DMA Operation, 8-bit command (0D0h - virtual speaker)
  2267.              
  2268.     NOTES
  2269.      ■ Halt commands are required for immediate termination and to quiet SB16.
  2270.  
  2271.     SEE ALSO
  2272.      0D0h   Halt DMA Operation, 8-bit                 
  2273.      045h   Continue Auto-Initialize DMA, 8-bit
  2274.      ·····················································
  2275.      0D3h   Disable Speaker
  2276. ------------------------------------------------------------------------------
  2277.  0E0h       DSP Identification                                      SB2.0
  2278.     COMMAND->DATA <-NOT(DATA)
  2279.  
  2280.     DESCRIPTION
  2281.      Returns bitwise NOT of data byte.
  2282.  
  2283.     NOTES
  2284.      ■ Results reliable only after DSP reset on early models.
  2285.  
  2286.     SEE ALSO
  2287.      0E1h   DSP Version
  2288.      0E3h   DSP Copyright
  2289. ------------------------------------------------------------------------------
  2290.  0E1h       DSP Version                                             SB
  2291.     COMMAND <-MAJORVERSIONBYTE<-MINORVERSIONBYTE
  2292.  
  2293.     DESCRIPTION
  2294.      Determines DSP major and minor version.
  2295.  
  2296.     MODEL                      VERSION
  2297.      SoundBlaster 1.0           1.??  (1.05???)
  2298.      SoundBlaster 1.5           1.??  (1.05???)
  2299.      SoundBlaster 2.0           2.xx  (2.01)
  2300.      SoundBlaster Pro           3.00  (???)
  2301.      SoundBlaster Pro 2         3.01+ (3.01, 3.02)
  2302.      SoundBlaster 16            4.0x  (4.04, 4.05)
  2303.      SoundBlaster 16 SCSI-2     4.11  (4.11)
  2304.      SoundBlaster AWE32         4.12+ (4.12)
  2305.  
  2306.     NOTES
  2307.      ■ Ensure that no other card is mapped at the same port address by
  2308.          performing this command twice, checking for a consistent result.
  2309.      ■ BUG: Some SB1.x clones errantly return version 2.00.
  2310.      ■ BUG: Some SB16 SCSI-2s experience daughterboard communication errors.
  2311.  
  2312.     SEE ALSO
  2313.      0E0h   DSP Identification
  2314.      0E3h   DSP Copyright
  2315. ------------------------------------------------------------------------------
  2316.  0E3h       DSP Copyright                                           SBPro2???
  2317.     COMMAND <-ASCII0...ASCIIn<-000h
  2318.  
  2319.     DESCRIPTION
  2320.      Reads DSP copyright string.
  2321.  
  2322.     PROCEDURE
  2323.       a) Send DSP Copyright command byte (0E3h)
  2324.       b) Read string byte
  2325.       c) Loop to B while string byte is not zero
  2326.  
  2327.     SEE ALSO
  2328.      0E0h   DSP Identification
  2329.      0E1h   DSP Version
  2330. ------------------------------------------------------------------------------
  2331.  0E4h       Write Test Register                                     SB2.0
  2332.     COMMAND->TESTBYTE
  2333.  
  2334.     DESCRIPTION
  2335.      Writes diagnostic register.
  2336.  
  2337.     NOTES
  2338.      ■ DSP reset does not clear the test register.
  2339.  
  2340.     SEE ALSO
  2341.      0E8h   Read Test Register
  2342. ------------------------------------------------------------------------------
  2343.  0E8h       Read Test Register                                      SB2.0
  2344.     COMMAND <-TESTBYTE
  2345.  
  2346.     DESCRIPTION
  2347.      Reads diagnostic register.
  2348.  
  2349.     NOTES
  2350.      ■ DSP reset does not clear the test register.
  2351.  
  2352.     SEE ALSO
  2353.      0E4h   Write Test Register
  2354. ------------------------------------------------------------------------------
  2355.  0F0h       Sine Generator                                          SB
  2356.     COMMAND
  2357.  
  2358.     DESCRIPTION
  2359.      Diagnostic peak-to-peak sine wave generator.
  2360.  
  2361.     NOTES
  2362.      ■ Disable sound with DSP reset.
  2363.      ■ Sinusodal frequency is about 2KHz.
  2364.      ■ Sets time constant to approximately 0C0h (15625Hz).
  2365.      ■ Enables speaker on models prior to SoundBlaster 16.
  2366. ------------------------------------------------------------------------------
  2367.  0F1h       DSP Auxiliary Status (Obsolete)                         SB-Pro2
  2368.     COMMAND <-STATUS
  2369.  
  2370.     DESCRIPTION
  2371.      Retrieves auxiliary information about pending DSP operations.
  2372.  
  2373.     STATUS BYTE
  2374.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  2375.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │[1]│ 0 ║
  2376.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  2377.        │   │   │   │   │   │   │   └─── Speaker Status  (0 = Enabled)
  2378.        │   │   │   │   │   │   └─────── Reserved (1)
  2379.        │   │   │   │   │   └─────────── DSPC 0ACh ???
  2380.        │   │   │   │   └─────────────── Stereo Input Mode (1 = Stereo)
  2381.        │   │   │   └─────────────────── Reserved (1)
  2382.        │   │   └─────────────────────── DSPC 020h-02Fh (SB1.x) ???
  2383.        │   └─────────────────────────── DSPC 02Dh-02Fh (SB1.x) ???
  2384.        └─────────────────────────────── ???
  2385.  
  2386.     NOTES
  2387.      ■ SoundBlaster Pro introduces bit 3.
  2388.  
  2389.     SEE ALSO
  2390.      004h   DSP Status (Obsolete)
  2391.      ·····················································
  2392.      0FBh   DSP Status
  2393.      0FCh   DSP Auxiliary Status
  2394.      0FDh   DSP Command Status
  2395.      ·····················································
  2396.      0D8h   Speaker Status    
  2397. ------------------------------------------------------------------------------
  2398.  0F2h       IRQ Request, 8-bit                                      SB
  2399.     COMMAND
  2400.  
  2401.     DESCRIPTION
  2402.      Triggers 8-bit interrupt.
  2403.  
  2404.     PROCEDURE
  2405.       a) Install IRQ handler (hook vector, update PIC mask)
  2406.       b) Perform IRQ Request, 8-bit command (0F2h)
  2407.       c) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
  2408.                                perform Generic EOI (020h) to appropriate PICs)
  2409.  
  2410.     SEE ALSO
  2411.      0F3h   Interrupt Request, 16-bit
  2412. ------------------------------------------------------------------------------
  2413.  0F3h       IRQ Request, 16-bit                                     SB16
  2414.     COMMAND
  2415.  
  2416.     DESCRIPTION
  2417.      Triggers 16-bit interrupt.
  2418.  
  2419.     PROCEDURE
  2420.       a) Install IRQ handler (hook vector, update PIC mask)
  2421.       b) Perform IRQ Request, 16-bit command (0F3h)
  2422.       c) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 16-bit port - 02x0Fh;
  2423.                                perform Generic EOI (020h) to appropriate PICs)
  2424.  
  2425.     SEE ALSO
  2426.      0F2h   Interrupt Request, 8-bit
  2427. ------------------------------------------------------------------------------
  2428.  0FBh       DSP Status                                              SB16
  2429.     COMMAND <-STATUS
  2430.  
  2431.     DESCRIPTION
  2432.      Retrieves information about pending DSP operations.
  2433.  
  2434.     STATUS BYTE
  2435.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  2436.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  2437.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  2438.        │   │   │   │   │   │   │   └─── DMA DAC, 8-bit  (1 = Active)
  2439.        │   │   │   │   │   │   └─────── DMA ADC, 8-bit  (1 = Active)
  2440.        │   │   │   │   │   └─────────── DMA DAC, 16-bit (1 = Active)
  2441.        │   │   │   │   └─────────────── DMA ADC, 16-bit (1 = Active)
  2442.        │   │   │   └─────────────────── Virtual Speaker (1 = Active)
  2443.        │   │   └─────────────────────── ???
  2444.        │   └─────────────────────────── DSPC 04Fh ???
  2445.        └─────────────────────────────── Time Constant   (1 = Modified)
  2446.  
  2447.     NOTES
  2448.      ■ Time Constant bit will not be set if too large a time constant was
  2449.         programmed (low sample rate).
  2450.      ■ MediaVision 3D-series cards use this command for DMA and IRQ selection.
  2451.  
  2452.     SEE ALSO
  2453.      0FCh   DSP Auxiliary Status
  2454.      0FDh   DSP Command Status
  2455.      ·····················································
  2456.      004h   DSP Status (Obsolete)
  2457.      0F1h   DSP Auxiliary Status (Obsolete)
  2458.      ·····················································
  2459.      0D8h   Speaker Status     
  2460. ------------------------------------------------------------------------------
  2461.  0FCh       DSP Auxiliary Status                                    SB16
  2462.     COMMAND <-STATUS
  2463.  
  2464.     DESCRIPTION
  2465.      Retrieves auxiliary information about pending DMA operations.
  2466.  
  2467.     STATUS BYTE
  2468.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  2469.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  2470.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  2471.        │   │   │   │   │   │   │   └─── ???
  2472.        │   │   │   │   │   │   └─────── DAC/ADC DMA           (1 = Synchronous)
  2473.        │   │   │   │   │   └─────────── Auto-Init DMA, 8-bit  (1 = Active)
  2474.        │   │   │   │   └─────────────── ???
  2475.        │   │   │   └─────────────────── Auto-Init DMA, 16-bit (1 = Active)
  2476.        │   │   └─────────────────────── ???
  2477.        │   └─────────────────────────── ???
  2478.        └─────────────────────────────── ???
  2479.  
  2480.     SEE ALSO
  2481.      0FBh   DSP Status
  2482.      0FDh   DSP Command Status
  2483.      ·····················································
  2484.      004h   DSP Status (Obsolete)
  2485.      0F1h   DSP Auxiliary Status (Obsolete)
  2486.      ·····················································
  2487.      0D8h   Speaker Status    
  2488. ------------------------------------------------------------------------------
  2489.  0FDh       DSP Command Status                                      SB16
  2490.     COMMAND <-COMMANDSTATUS
  2491.  
  2492.     DESCRIPTION
  2493.      Retrieves most recently successful DSP command.
  2494.  
  2495.     NOTES
  2496.      ■ Reseting the DSP clears this variable.
  2497.      ■ Command does not support all valid DSP commands, but most.
  2498.      ■ MediaVision 3D-series cards use this command for DMA and IRQ detection.
  2499.  
  2500.     SEE ALSO
  2501.      0FBh   DSP Status
  2502.      0FCh   DSP Auxiliary Status
  2503.      ·····················································
  2504.      004h   DSP Status (Obsolete)
  2505.      0F1h   DSP Auxiliary Status (Obsolete)
  2506.      ·····················································
  2507.      0D8h   Speaker Status    
  2508.  
  2509.  
  2510. ==============================================================================
  2511.  MIXER REGISTERS
  2512. ------------------------------------------------------------------------------
  2513.  000h       Reset                                       Write       SBPro
  2514.  001h       Status                                      Read        SBPro
  2515.  002h       Master Volume                               Read/Write  SBPro Only
  2516.  004h       DAC Level                                   Read/Write  SBPro
  2517.  006h       FM Output Control                           Read/Write  SBPro Only
  2518.  00Ah       Microphone Level                            Read/Write  SBPro
  2519.  00Ch       Input/Filter Select                         Read/Write  SBPro Only
  2520.  00Eh       Output/Stereo Select                        Read/Write  SBPro Only
  2521.  022h       Master Volume                               Read/Write  SBPro
  2522.  026h       FM Level                                    Read/Write  SBPro
  2523.  028h       CD Audio Level                              Read/Write  SBPro
  2524.  02Eh       Line In Level                               Read/Write  SBPro
  2525.  030h       Master Volume Left                          Read/Write  SB16
  2526.  031h       Master Volume Right                         Read/Write  SB16
  2527.  032h       DAC Level Left                              Read/Write  SB16
  2528.  033h       DAC Level Right                             Read/Write  SB16
  2529.  034h       FM Level Left                               Read/Write  SB16
  2530.  035h       FM Level Right                              Read/Write  SB16
  2531.  036h       CD Audio Level Left                         Read/Write  SB16
  2532.  037h       CD Audio Level Right                        Read/Write  SB16
  2533.  038h       Line In Level Left                          Read/Write  SB16
  2534.  039h       Line In Level Right                         Read/Write  SB16
  2535.  03Ah       Microphone Level                            Read/Write  SB16
  2536.  03Bh       PC Speaker Level                            Read/Write  SB16
  2537.  03Ch       Output Control                              Read/Write  SB16
  2538.  03Dh       Input Control Left                          Read/Write  SB16
  2539.  03Eh       Input Control Right                         Read/Write  SB16
  2540.  03Fh       Input Gain Control Left                     Read/Write  SB16
  2541.  040h       Input Gain Control Right                    Read/Write  SB16
  2542.  041h       Output Gain Control Left                    Read/Write  SB16
  2543.  042h       Output Gain Control Right                   Read/Write  SB16
  2544.  043h       Automatic Gain Control (AGC)                Read/Write  SB16
  2545.  044h       Treble Left                                 Read/Write  SB16
  2546.  045h       Treble Right                                Read/Write  SB16
  2547.  046h       Bass Left                                   Read/Write  SB16
  2548.  047h       Bass Right                                  Read/Write  SB16
  2549.  080h       IRQ Select                                  Read/Write  SB16
  2550.  081h       DMA Select                                  Read/Write  SB16
  2551.  082h       IRQ Status                                  Read        SB16
  2552.  
  2553. ------------------------------------------------------------------------------
  2554.  000h       Reset                                       Write       SBPro
  2555.  
  2556.     DESCRIPTION
  2557.      Resets mixer to default settings.
  2558.  
  2559.     PROCEDURE
  2560.       a) Load index register
  2561.       b) Wait 100µs
  2562.       c) Write reset stop
  2563.  
  2564.     RESET BYTE
  2565.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  2566.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  2567.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  2568.        │   │   │   │   │   │   │   └─── Reset Stop (0)
  2569.        │   │   │   │   │   │   └─────┬─ Reserved   (0)
  2570.        │   │   │   │   │   └─────────┤
  2571.        │   │   │   │   └─────────────┤
  2572.        │   │   │   └─────────────────┤
  2573.        │   │   └─────────────────────┤
  2574.        │   └─────────────────────────┤
  2575.        └─────────────────────────────┘
  2576.  
  2577.     NOTES
  2578.      ■ Defaults documented for each register (SBPro, SB16)
  2579. ------------------------------------------------------------------------------
  2580.  001h       Status                                      Read        SBPro
  2581.  
  2582.     DESCRIPTION
  2583.      Contains previously selected register value.
  2584.  
  2585.     STATUS BYTE
  2586.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  2587.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  2588.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  2589.        │   │   │   │   │   │   │   └─┬─ Mixer Data Register value
  2590.        │   │   │   │   │   │   └─────┤
  2591.        │   │   │   │   │   └─────────┤
  2592.        │   │   │   │   └─────────────┤
  2593.        │   │   │   └─────────────────┤
  2594.        │   │   └─────────────────────┤
  2595.        │   └─────────────────────────┤
  2596.        └─────────────────────────────┘
  2597.  
  2598.  
  2599.     NOTES
  2600.      ■ SoundBlaster 16 sets bit 7 if previous mixer index invalid.
  2601.      ■ Status bytes initially 080h on startup for all but level bytes (SB16)
  2602. ------------------------------------------------------------------------------
  2603.  002h       Master Volume                               Read/Write  SBPro Only
  2604.  
  2605.     VOLUME BYTE
  2606.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  2607.      ║ 7 │ 6 │ 5 │[4]│ 3 │ 2 │ 1 │[0]║
  2608.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  2609.        │   │   │   │   │   │   │   └─── Reserved (1)
  2610.        │   │   │   │   │   │   └─────┬─ Right Master Volume bit 3-1 (SBPro)
  2611.        │   │   │   │   │   └─────────┤
  2612.        │   │   │   │   └─────────────┘
  2613.        │   │   │   └─────────────────── Reserved (1)
  2614.        │   │   └─────────────────────┬─ Left  Master Volume bit 3-1 (SBPro)
  2615.        │   └─────────────────────────┤
  2616.        └─────────────────────────────┘
  2617.  
  2618.     DEFAULT
  2619.      099h, N/A
  2620.  
  2621.     NOTES
  2622.      ■ Same as register 022h selection.
  2623.  
  2624.     SEE ALSO
  2625.      022h   Master Volume                       Read/Write
  2626.      ·····················································
  2627.      030h   Master Volume Left                  Read/Write
  2628.      031h   Master Volume Right                 Read/Write
  2629. ------------------------------------------------------------------------------
  2630.  004h       DAC Level                                   Read/Write  SBPro
  2631.  
  2632.     LEVEL BYTE
  2633.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  2634.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  2635.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  2636.        │   │   │   │   │   │   │   └─── Right DAC Level bit  0  (SB16, SBPro=1)
  2637.        │   │   │   │   │   │   └─────┬─ Right DAC Level bit 3-1 (SBPro)
  2638.        │   │   │   │   │   └─────────┤
  2639.        │   │   │   │   └─────────────┘
  2640.        │   │   │   └─────────────────── Left  DAC Level bit  0  (SB16, SBPro=1)
  2641.        │   │   └─────────────────────┬─ Left  DAC Level bit 3-1 (SBPro)
  2642.        │   └─────────────────────────┤
  2643.        └─────────────────────────────┘
  2644.  
  2645.     DEFAULT
  2646.      099h, 0CCh
  2647.  
  2648.     NOTES
  2649.      ■ Mixer detection can be accomplished by looking for this register index.
  2650.      ■ SoundBlaster 16 will automatically update registers 031h and 032h,
  2651.         transferring bits 7-4 and setting bit 3.
  2652.  
  2653.     SEE ALSO
  2654.      032h   DAC Level Left                      Read/Write
  2655.      033h   DAC Level Right                     Read/Write
  2656. ------------------------------------------------------------------------------
  2657.  006h       FM Output Control                           Read/Write  SBPro Only
  2658.  
  2659.     CONTROL BYTE
  2660.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  2661.      ║[7]│ 6 │ 5 │[4]│ 3 │ 2 │ 1 │[0]║
  2662.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  2663.        │   │   │   │   │   │   │   └─── Reserved (1)
  2664.        │   │   │   │   │   │   └─────┬─ FM Level (bits 3-1, see notes)
  2665.        │   │   │   │   │   └─────────┤
  2666.        │   │   │   │   └─────────────┘
  2667.        │   │   │   └─────────────────── Reserved (1)
  2668.        │   │   └─────────────────────── FM Left  Channel (0 = On, 1 = Off)
  2669.        │   └─────────────────────────── FM Right Channel (0 = On, 1 = Off)
  2670.        └─────────────────────────────── Reserved (0)
  2671.  
  2672.     DEFAULT
  2673.      019h, N/A
  2674.  
  2675.     NOTES
  2676.      ■ FM level controls both channels.
  2677.      ■ If only one channel is active, the inactive channel's voices will
  2678.         be routed through the active one.
  2679.      ■ SoundBlaster Pro will automatically update register 026h,
  2680.         transferring source bits 3-0 to destination bits 7-4 and 3-0.
  2681.  
  2682.     SEE ALSO
  2683.      026h   FM Level                            Read/Write
  2684.      ·····················································
  2685.      034h   FM Level Left                       Read/Write
  2686.      035h   FM Level Right                      Read/Write
  2687. ------------------------------------------------------------------------------
  2688.  00Ah       Microphone Level                            Read/Write  SBPro
  2689.  
  2690.     LEVEL BYTE
  2691.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  2692.      ║[7]│[6]│[5]│[4]│[3]│ 2 │ 1 │ 0 ║
  2693.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  2694.        │   │   │   │   │   │   │   └─── Microphone Level bit  0  (SB16, SBPro=0)
  2695.        │   │   │   │   │   │   └─────┬─ Microphone Level bit 2-1 (SBPro)
  2696.        │   │   │   │   │   └─────────┘
  2697.        │   │   │   │   └─────────────┬─ Reserved (0)
  2698.        │   │   │   └─────────────────┤
  2699.        │   │   └─────────────────────┤
  2700.        │   └─────────────────────────┤
  2701.        └─────────────────────────────┘
  2702.  
  2703.     DEFAULT
  2704.      011h, 000h
  2705.  
  2706.     SEE ALSO
  2707.      03Ah   Microphone Level                    Read/Write
  2708. ------------------------------------------------------------------------------
  2709.  00Ch       Input/Filter Select                         Read/Write  SBPro Only
  2710.  
  2711.     SELECT BYTE
  2712.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  2713.      ║[7]│[6]│ 5 │[4]│ 3 │ 2 │ 1 │[0]║
  2714.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  2715.        │   │   │   │   │   │   │   └─── Reserved (1)
  2716.        │   │   │   │   │   │   └─────┬─ Input Select (0 = Microphone,
  2717.        │   │   │   │   │   └─────────┘                1 = CD Audio, 3 = Line In)
  2718.        │   │   │   │   └─────────────── Frequency (0 = Highpass, 1 = Lowpass)
  2719.        │   │   │   └─────────────────── Reserved (0)
  2720.        │   │   └─────────────────────── Filter Input (0 = On, 1 = Off)
  2721.        │   └─────────────────────────┬─ Reserved (0)
  2722.        └─────────────────────────────┘
  2723.  
  2724.     DEFAULT
  2725.      011h, N/A
  2726.  
  2727.     SEE ALSO
  2728.      03Dh   Input Control Left                  Read/Write
  2729.      03Eh   Input Control Right                 Read/Write
  2730. ------------------------------------------------------------------------------
  2731.  00Eh       Output/Stereo Select                        Read/Write  SBPro Only
  2732.  
  2733.     SELECT BYTE
  2734.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  2735.      ║[7]│[6]│ 5 │[4]│[3]│[2]│ 1 │[0]║
  2736.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  2737.        │   │   │   │   │   │   │   └─── Reserved (1)
  2738.        │   │   │   │   │   │   └─────── Stereo Output Mode (1 = Stereo)
  2739.        │   │   │   │   │   └─────────┬─ Reserved (0)
  2740.        │   │   │   │   └─────────────┘
  2741.        │   │   │   └─────────────────── Reserved (1)
  2742.        │   │   └─────────────────────── Filter Output (0 = On, 1 = Off)
  2743.        │   └─────────────────────────┬─ Reserved (0)
  2744.        └─────────────────────────────┘
  2745.  
  2746.     DEFAULT
  2747.      011h, N/A
  2748.  
  2749.     NOTES
  2750.      ■ SoundBlaster 16 uses command 0Bxh/0Cxh for stereo output.
  2751.  
  2752.     SEE ALSO
  2753.      03Ch   Output Control                      Read/Write
  2754. ------------------------------------------------------------------------------
  2755.  022h       Master Volume                               Read/Write  SBPro
  2756.  
  2757.     VOLUME BYTE
  2758.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  2759.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  2760.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  2761.        │   │   │   │   │   │   │   └─── Right Master bit  0  (SB16, SBPro=1)
  2762.        │   │   │   │   │   │   └─────┬─ Right Master bit 3-1 (SBPro)
  2763.        │   │   │   │   │   └─────────┤
  2764.        │   │   │   │   └─────────────┘
  2765.        │   │   │   └─────────────────── Left  Master bit  0  (SB16, SBPro=1)
  2766.        │   │   └─────────────────────┬─ Left  Master bit 3-1 (SBPro)
  2767.        │   └─────────────────────────┤
  2768.        └─────────────────────────────┘
  2769.  
  2770.     DEFAULT
  2771.      011h, 0CCh
  2772.  
  2773.     NOTES
  2774.      ■ SoundBlaster 16 will automatically update registers 030h and 031h,
  2775.         transferring bits 7-4 and setting bit 3.
  2776.      ■ SoundBlaster Pro register 002h is the same as this.
  2777.  
  2778.     SEE ALSO
  2779.      002h   Master Volume                       Read/Write
  2780.      ·····················································
  2781.      030h   Master Volume Left                  Read/Write
  2782.      031h   Master Volume Right                 Read/Write
  2783. ------------------------------------------------------------------------------
  2784.  026h       FM Level                                    Read/Write  SBPro
  2785.  
  2786.     LEVEL BYTE
  2787.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  2788.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  2789.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  2790.        │   │   │   │   │   │   │   └─── Right FM Level bit  0  (SB16, SBPro=1)
  2791.        │   │   │   │   │   │   └─────┬─ Right FM Level bit 3-1 (SBPro)
  2792.        │   │   │   │   │   └─────────┤
  2793.        │   │   │   │   └─────────────┘
  2794.        │   │   │   └─────────────────── Left  FM Level bit  0  (SB16, SBPro=1)
  2795.        │   │   └─────────────────────┬─ Left  FM Level bit 3-1 (SBPro)
  2796.        │   └─────────────────────────┤
  2797.        └─────────────────────────────┘
  2798.  
  2799.     DEFAULT
  2800.      011h, 0CCh
  2801.  
  2802.     NOTES
  2803.      ■ SoundBlaster 16 will automatically update registers 033h and 034h,
  2804.         transferring bits 7-4 and setting bit 3.
  2805.      ■ SoundBlaster Pro will automatically update register 006h,
  2806.         transferring bits 3-1 and setting bit 0.
  2807.  
  2808.     SEE ALSO
  2809.      006h   FM Output Control                   Read/Write
  2810.      ·····················································
  2811.      034h   FM Level Left                       Read/Write
  2812.      035h   FM Level Right                      Read/Write
  2813. ------------------------------------------------------------------------------
  2814.  028h       CD Audio Level                              Read/Write  SBPro
  2815.  
  2816.     LEVEL BYTE
  2817.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  2818.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  2819.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  2820.        │   │   │   │   │   │   │   └─── Right CD Audio bit  0  (SB16, SBPro=1)
  2821.        │   │   │   │   │   │   └─────┬─ Right CD Audio bit 3-1 (SBPro)
  2822.        │   │   │   │   │   └─────────┤
  2823.        │   │   │   │   └─────────────┘
  2824.        │   │   │   └─────────────────── Left  CD Audio bit  0  (SB16, SBPro=1)
  2825.        │   │   └─────────────────────┬─ Left  CD Audio bit 3-1 (SBPro)
  2826.        │   └─────────────────────────┤
  2827.        └─────────────────────────────┘
  2828.  
  2829.     DEFAULT
  2830.      011h, 000h
  2831.  
  2832.     NOTES
  2833.      ■ SoundBlaster 16 will automatically update registers 035h and 036h,
  2834.         transferring bits 7-4 and setting bit 3.
  2835.  
  2836.     SEE ALSO
  2837.      036h   CD Audio Level Left                 Read/Write
  2838.      037h   CD Audio Level Right                Read/Write
  2839. ------------------------------------------------------------------------------
  2840.  02Eh       Line In Level                               Read/Write  SBPro
  2841.  
  2842.     LEVEL BYTE
  2843.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  2844.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  2845.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  2846.        │   │   │   │   │   │   │   └─── Right Line In bit  0  (SB16, SBPro=1)
  2847.        │   │   │   │   │   │   └─────┬─ Right Line In bit 3-1 (SBPro)
  2848.        │   │   │   │   │   └─────────┤
  2849.        │   │   │   │   └─────────────┘
  2850.        │   │   │   └─────────────────── Left  Line In bit  0  (SB16, SBPro=1)
  2851.        │   │   └─────────────────────┬─ Left  Line In bit 3-1 (SBPro)
  2852.        │   └─────────────────────────┤
  2853.        └─────────────────────────────┘
  2854.  
  2855.     DEFAULT
  2856.      011h, 000h
  2857.  
  2858.     NOTES
  2859.      ■ SoundBlaster 16 will automatically update registers 037h and 038h,
  2860.         transferring bits 7-4 and setting bit 3.
  2861.  
  2862.     SEE ALSO
  2863.      038h   Line In Level Left                  Read/Write
  2864.      039h   Line In Level Right                 Read/Write
  2865. ------------------------------------------------------------------------------
  2866.  030h       Master Volume Left                          Read/Write  SB16
  2867.  
  2868.     VOLUME BYTE
  2869.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  2870.      ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
  2871.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  2872.        │   │   │   │   │   │   │   └─┬─ Reserved (0)
  2873.        │   │   │   │   │   │   └─────┤
  2874.        │   │   │   │   │   └─────────┘
  2875.        │   │   │   │   └─────────────┬─ Left Master Volume (2dB)
  2876.        │   │   │   └─────────────────┤
  2877.        │   │   └─────────────────────┤
  2878.        │   └─────────────────────────┤
  2879.        └─────────────────────────────┘
  2880.  
  2881.     DEFAULT
  2882.      N/A, 0C0h
  2883.  
  2884.     NOTES
  2885.      ■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 7-4
  2886.         of register 022h
  2887.      ■ SoundBlaster Pro selects register 020h for 030h.
  2888.  
  2889.     SEE ALSO
  2890.      031h   Master Volume Right                 Read/Write
  2891.      ·····················································
  2892.      022h   Master Volume                       Read/Write
  2893. ------------------------------------------------------------------------------
  2894.  031h       Master Volume Right                         Read/Write  SB16
  2895.  
  2896.     VOLUME BYTE
  2897.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  2898.      ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
  2899.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  2900.        │   │   │   │   │   │   │   └─┬─ Reserved (0)
  2901.        │   │   │   │   │   │   └─────┤
  2902.        │   │   │   │   │   └─────────┘
  2903.        │   │   │   │   └─────────────┬─ Right Master Volume (2dB)
  2904.        │   │   │   └─────────────────┤
  2905.        │   │   └─────────────────────┤
  2906.        │   └─────────────────────────┤
  2907.        └─────────────────────────────┘
  2908.  
  2909.     DEFAULT
  2910.      N/A, 0C0h
  2911.  
  2912.     NOTES
  2913.      ■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 3-0
  2914.         of register 022h.
  2915.  
  2916.     SEE ALSO
  2917.      030h   Master Volume Left                  Read/Write
  2918.      ·····················································
  2919.      022h   Master Volume                       Read/Write
  2920. ------------------------------------------------------------------------------
  2921.  032h       DAC Level Left                              Read/Write  SB16
  2922.  
  2923.     LEVEL BYTE
  2924.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  2925.      ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
  2926.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  2927.        │   │   │   │   │   │   │   └─┬─ Reserved (0)
  2928.        │   │   │   │   │   │   └─────┤
  2929.        │   │   │   │   │   └─────────┘
  2930.        │   │   │   │   └─────────────┬─ Left DAC Level (2dB)
  2931.        │   │   │   └─────────────────┤
  2932.        │   │   └─────────────────────┤
  2933.        │   └─────────────────────────┤
  2934.        └─────────────────────────────┘
  2935.  
  2936.     DEFAULT
  2937.      N/A, 0C0h
  2938.  
  2939.     NOTES
  2940.      ■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 7-4
  2941.         of register 024h.
  2942.      ■ SoundBlaster Pro selects register 022h for 032h.
  2943.  
  2944.     SEE ALSO
  2945.      033h   DAC Level Right                     Read/Write
  2946.      ·····················································
  2947.      004h   DAC Level                           Read/Write
  2948. ------------------------------------------------------------------------------
  2949.  033h       DAC Level Right                             Read/Write  SB16
  2950.  
  2951.     LEVEL BYTE
  2952.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  2953.      ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
  2954.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  2955.        │   │   │   │   │   │   │   └─┬─ Reserved (0)
  2956.        │   │   │   │   │   │   └─────┤
  2957.        │   │   │   │   │   └─────────┘
  2958.        │   │   │   │   └─────────────┬─ Right DAC Level (2dB)
  2959.        │   │   │   └─────────────────┤
  2960.        │   │   └─────────────────────┤
  2961.        │   └─────────────────────────┤
  2962.        └─────────────────────────────┘
  2963.  
  2964.     DEFAULT
  2965.      N/A, 0C0h
  2966.  
  2967.     NOTES
  2968.      ■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 3-0
  2969.         of register 024h.
  2970.  
  2971.     SEE ALSO
  2972.      032h   DAC Level Left                      Read/Write
  2973.      ·····················································
  2974.      004h   DAC Level                           Read/Write
  2975. ------------------------------------------------------------------------------
  2976.  034h       FM Level Left                               Read/Write  SB16
  2977.  
  2978.     LEVEL BYTE
  2979.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  2980.      ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
  2981.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  2982.        │   │   │   │   │   │   │   └─┬─ Reserved (0)
  2983.        │   │   │   │   │   │   └─────┤
  2984.        │   │   │   │   │   └─────────┘
  2985.        │   │   │   │   └─────────────┬─ Left FM Level (2dB)
  2986.        │   │   │   └─────────────────┤
  2987.        │   │   └─────────────────────┤
  2988.        │   └─────────────────────────┤
  2989.        └─────────────────────────────┘
  2990.  
  2991.     DEFAULT
  2992.      N/A, 0C0h
  2993.  
  2994.     NOTES
  2995.      ■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 7-4
  2996.         of register 026h.
  2997.  
  2998.     SEE ALSO
  2999.      035h   FM Level Right                      Read/Write
  3000.      ·····················································
  3001.      006h   FM Output Control                   Read/Write
  3002.      026h   FM Level                            Read/Write
  3003. ------------------------------------------------------------------------------
  3004.  035h       FM Level Right                              Read/Write  SB16
  3005.  
  3006.     LEVEL BYTE
  3007.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3008.      ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
  3009.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3010.        │   │   │   │   │   │   │   └─┬─ Reserved (0)
  3011.        │   │   │   │   │   │   └─────┤
  3012.        │   │   │   │   │   └─────────┘
  3013.        │   │   │   │   └─────────────┬─ Right FM Level (2dB)
  3014.        │   │   │   └─────────────────┤
  3015.        │   │   └─────────────────────┤
  3016.        │   └─────────────────────────┤
  3017.        └─────────────────────────────┘
  3018.  
  3019.     DEFAULT
  3020.      N/A, 0C0h
  3021.  
  3022.     NOTES
  3023.      ■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 3-0
  3024.         of register 026h.
  3025.  
  3026.     SEE ALSO
  3027.      034h   FM Level Left                       Read/Write
  3028.      ·····················································
  3029.      006h   FM Output Control                   Read/Write
  3030.      026h   FM Level                            Read/Write
  3031. ------------------------------------------------------------------------------
  3032.  036h       CD Audio Level Left                         Read/Write  SB16
  3033.  
  3034.     LEVEL BYTE
  3035.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3036.      ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
  3037.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3038.        │   │   │   │   │   │   │   └─┬─ Reserved (0)
  3039.        │   │   │   │   │   │   └─────┤
  3040.        │   │   │   │   │   └─────────┘
  3041.        │   │   │   │   └─────────────┬─ Left CD Audio Level (2dB)
  3042.        │   │   │   └─────────────────┤
  3043.        │   │   └─────────────────────┤
  3044.        │   └─────────────────────────┤
  3045.        └─────────────────────────────┘
  3046.  
  3047.     DEFAULT
  3048.      N/A, 000h
  3049.  
  3050.     NOTES
  3051.      ■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 7-4
  3052.         of register 028h.
  3053.      ■ SoundBlaster Pro selects register 026h for 036h.
  3054.  
  3055.     SEE ALSO
  3056.      037h   CD Audio Level Right                Read/Write
  3057.      ·····················································
  3058.      028h   CD Audio Level                      Read/Write
  3059. ------------------------------------------------------------------------------
  3060.  037h       CD Audio Level Right                        Read/Write  SB16
  3061.  
  3062.     LEVEL BYTE
  3063.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3064.      ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
  3065.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3066.        │   │   │   │   │   │   │   └─┬─ Reserved (0)
  3067.        │   │   │   │   │   │   └─────┤
  3068.        │   │   │   │   │   └─────────┘
  3069.        │   │   │   │   └─────────────┬─ Right CD Audio Level (2dB)
  3070.        │   │   │   └─────────────────┤
  3071.        │   │   └─────────────────────┤
  3072.        │   └─────────────────────────┤
  3073.        └─────────────────────────────┘
  3074.  
  3075.     DEFAULT
  3076.      N/A, 000h
  3077.  
  3078.     NOTES
  3079.      ■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 3-0
  3080.         of register 028h.
  3081.  
  3082.     SEE ALSO
  3083.      036h   CD Audio Level Left                 Read/Write
  3084.      ·····················································
  3085.      028h   CD Audio Level                      Read/Write
  3086. ------------------------------------------------------------------------------
  3087.  038h       Line In Level Left                          Read/Write  SB16
  3088.  
  3089.     LEVEL BYTE
  3090.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3091.      ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
  3092.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3093.        │   │   │   │   │   │   │   └─┬─ Reserved (0)
  3094.        │   │   │   │   │   │   └─────┤
  3095.        │   │   │   │   │   └─────────┘
  3096.        │   │   │   │   └─────────────┬─ Left Line In Level (2dB)
  3097.        │   │   │   └─────────────────┤
  3098.        │   │   └─────────────────────┤
  3099.        │   └─────────────────────────┤
  3100.        └─────────────────────────────┘
  3101.  
  3102.     DEFAULT
  3103.      N/A, 000h
  3104.  
  3105.     NOTES
  3106.      ■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 7-4
  3107.         of register 02Eh.
  3108.      ■ SoundBlaster Pro selects register 028h for 038h.
  3109.  
  3110.     SEE ALSO
  3111.      039h   Line In Level Right                 Read/Write
  3112.      ·····················································
  3113.      02Eh   Line In Level                       Read/Write
  3114. ------------------------------------------------------------------------------
  3115.  039h       Line In Level Right                         Read/Write  SB16
  3116.  
  3117.     LEVEL BYTE
  3118.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3119.      ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
  3120.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3121.        │   │   │   │   │   │   │   └─┬─ Reserved (0)
  3122.        │   │   │   │   │   │   └─────┤
  3123.        │   │   │   │   │   └─────────┘
  3124.        │   │   │   │   └─────────────┬─ Right Line In Level (2dB)
  3125.        │   │   │   └─────────────────┤
  3126.        │   │   └─────────────────────┤
  3127.        │   └─────────────────────────┤
  3128.        └─────────────────────────────┘
  3129.  
  3130.     DEFAULT
  3131.      N/A, 000h
  3132.  
  3133.     NOTES
  3134.      ■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 3-0
  3135.         of register 02Eh.
  3136.  
  3137.     SEE ALSO
  3138.      038h   Line In Level Left                  Read/Write
  3139.      ·····················································
  3140.      02Eh   Line In Level                       Read/Write
  3141. ------------------------------------------------------------------------------
  3142.  03Ah       Microphone Level                            Read/Write  SB16
  3143.  
  3144.     LEVEL BYTE
  3145.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3146.      ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
  3147.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3148.        │   │   │   │   │   │   │   └─┬─ Reserved (0)
  3149.        │   │   │   │   │   │   └─────┤
  3150.        │   │   │   │   │   └─────────┘
  3151.        │   │   │   │   └─────────────┬─ Microphone Level (2dB)
  3152.        │   │   │   └─────────────────┤
  3153.        │   │   └─────────────────────┤
  3154.        │   └─────────────────────────┤
  3155.        └─────────────────────────────┘
  3156.  
  3157.     DEFAULT
  3158.      N/A, 000h
  3159.  
  3160.     SEE ALSO
  3161.      00Ah   Microphone Level                    Read/Write
  3162. ------------------------------------------------------------------------------
  3163.  03Bh       PC Speaker Level                            Read/Write  SB16
  3164.  
  3165.     LEVEL BYTE
  3166.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3167.      ║ 7 │ 6 │[5]│[4]│[3]│[2]│[1]│[0]║
  3168.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3169.        │   │   │   │   │   │   │   └─┬─ Reserved (0)
  3170.        │   │   │   │   │   │   └─────┤
  3171.        │   │   │   │   │   └─────────┤
  3172.        │   │   │   │   └─────────────┤
  3173.        │   │   │   └─────────────────┤
  3174.        │   │   └─────────────────────┘
  3175.        │   └─────────────────────────┬─ PC Speaker Level (2dB)
  3176.        └─────────────────────────────┘
  3177.  
  3178.     DEFAULT
  3179.      N/A, 000h
  3180. ------------------------------------------------------------------------------
  3181.  03Ch       Output Control                              Read/Write  SB16
  3182.  
  3183.     CONTROL BYTE
  3184.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3185.      ║[7]│[6]│[5]│ 4 │ 3 │ 2 │ 1 │ 0 ║
  3186.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3187.        │   │   │   │   │   │   │   └─── Microphone     (0 = Off, 1 = On)
  3188.        │   │   │   │   │   │   └─────── Right CD Audio (0 = Off, 1 = On)
  3189.        │   │   │   │   │   └─────────── Left  CD Audio (0 = Off, 1 = On)
  3190.        │   │   │   │   └─────────────── Right Line In  (0 = Off, 1 = On)
  3191.        │   │   │   └─────────────────── Left  Line In  (0 = Off, 1 = On)
  3192.        │   │   └─────────────────────┬─ Reserved (0)
  3193.        │   └─────────────────────────┤
  3194.        └─────────────────────────────┘
  3195.  
  3196.     DEFAULT
  3197.      N/A, 01Fh
  3198.  
  3199.     SEE ALSO
  3200.      041h   Output Gain Control Left            Read/Write
  3201.      042h   Output Gain Control Right           Read/Write
  3202.      ·····················································
  3203.      036h   CD Audio Level Left                 Read/Write
  3204.      037h   CD Audio Level Right                Read/Write
  3205.      038h   Line In Level Left                  Read/Write
  3206.      039h   Line In Level Right                 Read/Write
  3207.      03Ah   Microphone Level                    Read/Write
  3208.      ·····················································
  3209.      00Eh   Output/Stereo Select                Read/Write
  3210. ------------------------------------------------------------------------------
  3211.  03Dh       Input Control Left                          Read/Write  SB16
  3212.  
  3213.     CONTROL BYTE
  3214.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3215.      ║[7]│ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  3216.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3217.        │   │   │   │   │   │   │   └─── Microphone     (0 = Off, 1 = On)
  3218.        │   │   │   │   │   │   └─────── Right CD Audio (0 = Off, 1 = On)
  3219.        │   │   │   │   │   └─────────── Left  CD Audio (0 = Off, 1 = On)
  3220.        │   │   │   │   └─────────────── Right Line In  (0 = Off, 1 = On)
  3221.        │   │   │   └─────────────────── Left  Line In  (0 = Off, 1 = On)
  3222.        │   │   └─────────────────────── Right FM       (0 = Off, 1 = On)
  3223.        │   └─────────────────────────── Left  FM       (0 = Off, 1 = On)
  3224.        └─────────────────────────────── Reserved (0)
  3225.  
  3226.     DEFAULT
  3227.      N/A, 015h
  3228.  
  3229.     NOTES
  3230.      ■ Register controls remapping of left input channel
  3231.         (off, left, right, or left and right)
  3232.  
  3233.     SEE ALSO
  3234.      03Eh   Input Control Right                 Read/Write
  3235.      ·····················································
  3236.      03Fh   Input Gain Control Left             Read/Write
  3237.      ·····················································
  3238.      034h   FM Level Left                       Read/Write
  3239.      035h   FM Level Right                      Read/Write
  3240.      036h   CD Audio Level Left                 Read/Write
  3241.      037h   CD Audio Level Right                Read/Write
  3242.      038h   Line In Level Left                  Read/Write
  3243.      039h   Line In Level Right                 Read/Write
  3244.      03Ah   Microphone Level                    Read/Write
  3245.      ·····················································
  3246.      00Ch   Input/Filter Select                 Read/Write
  3247. ------------------------------------------------------------------------------
  3248.  03Eh       Input Control Right                         Read/Write  SB16
  3249.  
  3250.     CONTROL BYTE
  3251.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3252.      ║[7]│ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  3253.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3254.        │   │   │   │   │   │   │   └─── Microphone     (0 = Off, 1 = On)
  3255.        │   │   │   │   │   │   └─────── Right CD Audio (0 = Off, 1 = On)
  3256.        │   │   │   │   │   └─────────── Left  CD Audio (0 = Off, 1 = On)
  3257.        │   │   │   │   └─────────────── Right Line In  (0 = Off, 1 = On)
  3258.        │   │   │   └─────────────────── Left  Line In  (0 = Off, 1 = On)
  3259.        │   │   └─────────────────────── Right FM       (0 = Off, 1 = On)
  3260.        │   └─────────────────────────── Left  FM       (0 = Off, 1 = On)
  3261.        └─────────────────────────────── Reserved (0)
  3262.  
  3263.     DEFAULT
  3264.      N/A, 00Bh
  3265.  
  3266.     NOTES
  3267.      ■ Register controls remapping of right input channel
  3268.         (off, left, right, or left and right)
  3269.      ■ SoundBlaster Pro selects register 02Eh for 03Eh.
  3270.  
  3271.     SEE ALSO
  3272.      03Dh   Input Control Left                  Read/Write
  3273.      ·····················································
  3274.      040h   Input Gain Control Right            Read/Write
  3275.      ·····················································
  3276.      034h   FM Level Left                       Read/Write
  3277.      035h   FM Level Right                      Read/Write
  3278.      036h   CD Audio Level Left                 Read/Write
  3279.      037h   CD Audio Level Right                Read/Write
  3280.      038h   Line In Level Left                  Read/Write
  3281.      039h   Line In Level Right                 Read/Write
  3282.      03Ah   Microphone Level                    Read/Write
  3283.      ·····················································
  3284.      00Ch   Input/Filter Select                 Read/Write
  3285. ------------------------------------------------------------------------------
  3286.  03Fh       Input Gain Control Left                     Read/Write  SB16
  3287.  
  3288.     GAIN BYTE
  3289.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3290.      ║ 7 │ 6 │[5]│[4]│[3]│[2]│[1]│[0]║
  3291.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3292.        │   │   │   │   │   │   │   └─┬─ Reserved (0)
  3293.        │   │   │   │   │   │   └─────┤
  3294.        │   │   │   │   │   └─────────┤
  3295.        │   │   │   │   └─────────────┤
  3296.        │   │   │   └─────────────────┤
  3297.        │   │   └─────────────────────┘
  3298.        │   └─────────────────────────┬─ Left Input Gain Control (2^x)
  3299.        └─────────────────────────────┘
  3300.  
  3301.     DEFAULT
  3302.      N/A, 000h
  3303.  
  3304.     SEE ALSO
  3305.      040h   Input Gain Control Right            Read/Write
  3306.      ·····················································
  3307.      043h   Automatic Gain Control (AGC)        Read/Write
  3308.      ·····················································
  3309.      03Dh   Input Control Left                  Read/Write
  3310. ------------------------------------------------------------------------------
  3311.  040h       Input Gain Control Right                    Read/Write  SB16
  3312.  
  3313.     GAIN BYTE
  3314.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3315.      ║ 7 │ 6 │[5]│[4]│[3]│[2]│[1]│[0]║
  3316.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3317.        │   │   │   │   │   │   │   └─┬─ Reserved (0)
  3318.        │   │   │   │   │   │   └─────┤
  3319.        │   │   │   │   │   └─────────┤
  3320.        │   │   │   │   └─────────────┤
  3321.        │   │   │   └─────────────────┤
  3322.        │   │   └─────────────────────┘
  3323.        │   └─────────────────────────┬─ Right Input Gain Control (2^x)
  3324.        └─────────────────────────────┘
  3325.  
  3326.     DEFAULT
  3327.      N/A, 000h
  3328.  
  3329.     SEE ALSO
  3330.      03Fh   Input Gain Control Left             Read/Write
  3331.      ·····················································
  3332.      043h   Automatic Gain Control (AGC)        Read/Write
  3333.      ·····················································
  3334.      03Dh   Input Control Right                 Read/Write
  3335. ------------------------------------------------------------------------------
  3336.  041h       Output Gain Control Left                    Read/Write  SB16
  3337.  
  3338.     GAIN BYTE
  3339.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3340.      ║ 7 │ 6 │[5]│[4]│[3]│[2]│[1]│[0]║
  3341.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3342.        │   │   │   │   │   │   │   └─┬─ Reserved (0)
  3343.        │   │   │   │   │   │   └─────┤
  3344.        │   │   │   │   │   └─────────┤
  3345.        │   │   │   │   └─────────────┤
  3346.        │   │   │   └─────────────────┤
  3347.        │   │   └─────────────────────┘
  3348.        │   └─────────────────────────┬─ Left Output Gain Control (2^x)
  3349.        └─────────────────────────────┘
  3350.  
  3351.     DEFAULT
  3352.      N/A, 000h
  3353.  
  3354.     NOTES
  3355.      ■ Output Gain Control has no effect when internal amplifier disabled.
  3356.  
  3357.     SEE ALSO
  3358.      042h   Output Gain Control Right           Read/Write
  3359.      ·····················································
  3360.      03Ch   Output Control                      Read/Write
  3361. ------------------------------------------------------------------------------
  3362.  042h       Output Gain Control Right                   Read/Write  SB16
  3363.  
  3364.     GAIN BYTE
  3365.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3366.      ║ 7 │ 6 │[5]│[4]│[3]│[2]│[1]│[0]║
  3367.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3368.        │   │   │   │   │   │   │   └─┬─ Reserved (0)
  3369.        │   │   │   │   │   │   └─────┤
  3370.        │   │   │   │   │   └─────────┤
  3371.        │   │   │   │   └─────────────┤
  3372.        │   │   │   └─────────────────┤
  3373.        │   │   └─────────────────────┘
  3374.        │   └─────────────────────────┬─ Right Output Gain Control (2^x)
  3375.        └─────────────────────────────┘
  3376.  
  3377.     DEFAULT
  3378.      N/A, 000h
  3379.  
  3380.     NOTES
  3381.      ■ Output Gain Control has no effect when internal amplifier disabled.
  3382.  
  3383.     SEE ALSO
  3384.      041h   Output Gain Control Left            Read/Write
  3385.      ·····················································
  3386.      03Ch   Output Control                      Read/Write
  3387. ------------------------------------------------------------------------------
  3388.  043h       Automatic Gain Control (AGC)                Read/Write  SB16
  3389.  
  3390.     AGC BYTE
  3391.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3392.      ║[7]│[6]│[5]│[4]│[3]│[2]│[1]│ 0 ║
  3393.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3394.        │   │   │   │   │   │   │   └─── Automatic Gain Control (1 = Enable)
  3395.        │   │   │   │   │   │   └─────┬─ Reserved (0)
  3396.        │   │   │   │   │   └─────────┤
  3397.        │   │   │   │   └─────────────┤
  3398.        │   │   │   └─────────────────┤
  3399.        │   │   └─────────────────────┤
  3400.        │   └─────────────────────────┤
  3401.        └─────────────────────────────┘
  3402.  
  3403.     DEFAULT
  3404.      N/A, 000h
  3405.  
  3406.     NOTES
  3407.      ■ Automatic Gain Control automatically maximizes input signal strength.
  3408.  
  3409.     SEE ALSO
  3410.      03Fh   Input Gain Control Left             Read/Write
  3411.      040h   Input Gain Control Right            Read/Write
  3412. ------------------------------------------------------------------------------
  3413.  044h       Treble Left                                 Read/Write  SB16
  3414.  
  3415.     TREBLE BYTE
  3416.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3417.      ║ 7 │ 6 │ 5 │ 4 │[3]│[2]│[1]│[0]║
  3418.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3419.        │   │   │   │   │   │   │   └─┬─ Reserved (0)
  3420.        │   │   │   │   │   │   └─────┤
  3421.        │   │   │   │   │   └─────────┤
  3422.        │   │   │   │   └─────────────┘
  3423.        │   │   │   └─────────────────┬─ Treble Left (2dB, -14dB to 14dB)
  3424.        │   │   └─────────────────────┤
  3425.        │   └─────────────────────────┤
  3426.        └─────────────────────────────┘
  3427.  
  3428.     DEFAULT
  3429.      N/A, 080h
  3430.  
  3431.     SEE ALSO
  3432.      045h   Treble Right                        Read/Write
  3433.      ·····················································
  3434.      046h   Bass Left                           Read/Write
  3435. ------------------------------------------------------------------------------
  3436.  045h       Treble Right                                Read/Write  SB16
  3437.  
  3438.     TREBLE BYTE
  3439.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3440.      ║ 7 │ 6 │ 5 │ 4 │[3]│[2]│[1]│[0]║
  3441.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3442.        │   │   │   │   │   │   │   └─┬─ Reserved (0)
  3443.        │   │   │   │   │   │   └─────┤
  3444.        │   │   │   │   │   └─────────┤
  3445.        │   │   │   │   └─────────────┘
  3446.        │   │   │   └─────────────────┬─ Treble Right (2dB, -14dB to 14dB)
  3447.        │   │   └─────────────────────┤
  3448.        │   └─────────────────────────┤
  3449.        └─────────────────────────────┘
  3450.  
  3451.     DEFAULT
  3452.      N/A, 080h
  3453.  
  3454.     SEE ALSO
  3455.      044h   Treble Left                         Read/Write
  3456.      ·····················································
  3457.      047h   Bass Right                          Read/Write
  3458. ------------------------------------------------------------------------------
  3459.  046h       Bass Left                                   Read/Write  SB16
  3460.  
  3461.     BASS BYTE
  3462.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3463.      ║ 7 │ 6 │ 5 │ 4 │[3]│[2]│[1]│[0]║
  3464.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3465.        │   │   │   │   │   │   │   └─┬─ Reserved (0)
  3466.        │   │   │   │   │   │   └─────┤
  3467.        │   │   │   │   │   └─────────┤
  3468.        │   │   │   │   └─────────────┘
  3469.        │   │   │   └─────────────────┬─ Bass Left (2dB, -14dB to 14dB)
  3470.        │   │   └─────────────────────┤
  3471.        │   └─────────────────────────┤
  3472.        └─────────────────────────────┘
  3473.  
  3474.     DEFAULT
  3475.      N/A, 080h
  3476.  
  3477.     SEE ALSO
  3478.      047h   Bass Right                          Read/Write
  3479.      ·····················································
  3480.      044h   Treble Left                         Read/Write
  3481. ------------------------------------------------------------------------------
  3482.  047h       Bass Right                                  Read/Write  SB16
  3483.  
  3484.     BASS BYTE
  3485.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3486.      ║ 7 │ 6 │ 5 │ 4 │[3]│[2]│[1]│[0]║
  3487.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3488.        │   │   │   │   │   │   │   └─┬─ Reserved (0)
  3489.        │   │   │   │   │   │   └─────┤
  3490.        │   │   │   │   │   └─────────┤
  3491.        │   │   │   │   └─────────────┘
  3492.        │   │   │   └─────────────────┬─ Bass Right (2dB, -14dB to 14dB)
  3493.        │   │   └─────────────────────┤
  3494.        │   └─────────────────────────┤
  3495.        └─────────────────────────────┘
  3496.  
  3497.     DEFAULT
  3498.      N/A, 080h
  3499.  
  3500.     SEE ALSO
  3501.      046h   Bass Left                           Read/Write
  3502.      ·····················································
  3503.      045h   Treble Right                        Read/Write
  3504. ------------------------------------------------------------------------------
  3505.  080h       IRQ Select                                  Read/Write  SB16
  3506.  
  3507.     SELECT BYTE
  3508.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3509.      ║[7]│[6]│[5]│[4]│ 3 │ 2 │ 1 │ 0 ║
  3510.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3511.        │   │   │   │   │   │   │   └─── IRQ2  (0 = Disable, 1 = Enable)
  3512.        │   │   │   │   │   │   └─────── IRQ5  (0 = Disable, 1 = Enable)
  3513.        │   │   │   │   │   └─────────── IRQ7  (0 = Disable, 1 = Enable)
  3514.        │   │   │   │   └─────────────── IRQ10 (0 = Disable, 1 = Enable)
  3515.        │   │   │   └─────────────────┬─ Reserved (1)
  3516.        │   │   └─────────────────────┤
  3517.        │   └─────────────────────────┤
  3518.        └─────────────────────────────┘
  3519.  
  3520.     NOTES
  3521.      ■ Unaffected by mixer reset or soft reboot.
  3522.      ■ Enabling multiple bits enables multiple IRQs.
  3523.  
  3524.     SEE ALSO
  3525.      081h   DMA Select                          Read/Write
  3526.      ·····················································
  3527.      082h   IRQ Status                          Read
  3528. ------------------------------------------------------------------------------
  3529.  081h       DMA Select                                  Read/Write  SB16
  3530.  
  3531.     SELECT BYTE
  3532.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3533.      ║ 7 │ 6 │ 5 │[4]│ 3 │[2]│ 1 │ 0 ║
  3534.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3535.        │   │   │   │   │   │   │   └─── DMA0, 8-bit  (0 = Disable, 1 = Enable)
  3536.        │   │   │   │   │   │   └─────── DMA1, 8-bit  (0 = Disable, 1 = Enable)
  3537.        │   │   │   │   │   └─────────── DMA2, Reserved (0)
  3538.        │   │   │   │   └─────────────── DMA3, 8-bit  (0 = Disable, 1 = Enable)
  3539.        │   │   │   └─────────────────── DMA4, Reserved (0)
  3540.        │   │   └─────────────────────── DMA5, 16-bit (0 = Disable, 1 = Enable)
  3541.        │   └─────────────────────────── DMA6, 16-bit (0 = Disable, 1 = Enable)
  3542.        └─────────────────────────────── DMA7, 16-bit (0 = Disable, 1 = Enable)
  3543.  
  3544.     NOTES
  3545.      ■ Unaffected by mixer reset or soft reboot.
  3546.      ■ Enabling multiple 8 or 16-bit DMA bits enables multiple DMA channels.
  3547.      ■ Disabling all 8-bit DMA channel bits disables 8-bit DMA requests,
  3548.         including translated 16-bit DMA requests.
  3549.      ■ Disabling all 16-bit DMA channel bits enables translation of 16-bit DMA
  3550.         requests to 8-bit ones, using the selected 8-bit DMA channel.
  3551.  
  3552.     SEE ALSO
  3553.      080h   IRQ Select                          Read/Write
  3554. ------------------------------------------------------------------------------
  3555.  082h       IRQ Status                                  Read        SB16
  3556.  
  3557.     STATUS BYTE
  3558.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3559.      ║ 7 │ 6 │ 5 │ 4 │[3]│ 2 │ 1 │ 0 ║
  3560.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3561.        │   │   │   │   │   │   │   └─── IRQ Status, 8-bit   (1 = Active)
  3562.        │   │   │   │   │   │   └─────── IRQ Status, 16-bit  (1 = Active)
  3563.        │   │   │   │   │   └─────────── IRQ Status, MPU-401 (1 = Active)
  3564.        │   │   │   │   └─────────────── Reserved (0)
  3565.        │   │   │   └─────────────────┬─ ???
  3566.        │   │   └─────────────────────┤  (01h = v4.04, 02h = v4.05, 08h = v4.12)
  3567.        │   └─────────────────────────┤
  3568.        └─────────────────────────────┘
  3569.  
  3570.     SEE ALSO
  3571.      080h   IRQ Select                          Read/Write
  3572.  
  3573.  
  3574. ==============================================================================
  3575.  DMA CONTROLLERS
  3576. ------------------------------------------------------------------------------
  3577.  
  3578.  ┌-────────┐     ┌──┬┬──┐              ┌──┬┬──┐
  3579.  │ ┌─────┐ │    ╒╡  └┘  ╞╕─Channel 4──╒╡  └┘  ╞╕─── Channel 0 ┐
  3580.  │ │ CPU │ │────╒╡ DMA2 ╞╕──────────┐ ╒╡ DMA1 ╞╕─── Channel 1 ├ 8-bit
  3581.  │ └─────┘ │    ╒╡ 8237 ╞╕────────┐ │ ╒╡ 8237 ╞╕─── Channel 2 │
  3582.  └────────┘     ╒╡      ╞╕──────┐ │ │ ╒╡      ╞╕─── Channel 3 ┘
  3583.                  └──────┘       │ │ │  └──────┘
  3584.                                 │ │ └────────────── Channel 5 ┐
  3585.    DMAC ORGANIZATION (AT)       │ └──────────────── Channel 6 ├ 16-bit
  3586.                                 └────────────────── Channel 7 ┘
  3587.  
  3588.  ─────────────────────────────────────────────────────────────────────────────
  3589.  
  3590.  ╔═══════════════╤═════════════════╤═════════════════╗
  3591.  ║  DMA CHANNEL  │ AT ARCHITECTURE │ XT ARCHITECTURE ║
  3592.  ║               │                 │                 ║
  3593.  ╠═══════════════╪═════════════════╪═════════════════╣  ┐
  3594.  ║       0       │ AVAILABLE       │ DRAM REFRESH    ║  │
  3595.  ╟───────────────┼─────────────────┼─────────────────╢  ├ Memory-Memory support
  3596.  ║       1       │ AVAILABLE       │ AVAILABLE       ║  │
  3597.  ╟───────────────┼─────────────────┼─────────────────╢  ┘
  3598.  ║       2       │ FLOPPY CONTRLR. │ FLOPPY CONTRLR. ║
  3599.  ╟───────────────┼─────────────────┼─────────────────╢
  3600.  ║       3       │ AVAILABLE       │ HDD CONTROLLER  ║
  3601.  ╟---------------┼-----------------┼-----------------╢
  3602.  ║       4       │ CASCADE         │ N/A             ║
  3603.  ╟───────────────┼─────────────────┼─────────────────╢
  3604.  ║       5       │ AVAILABLE       │ N/A             ║
  3605.  ╟───────────────┼─────────────────┼─────────────────╢
  3606.  ║       6       │ AVAILABLE       │ N/A             ║
  3607.  ╟───────────────┼─────────────────┼─────────────────╢
  3608.  ║       7       │ AVAILABLE       │ N/A             ║
  3609.  ╚═══════════════╧═════════════════╧═════════════════╝
  3610.  
  3611.  ─────────────────────────────────────────────────────────────────────────────
  3612.   PROCEDURE
  3613.  ─────────────────────────────────────────────────────────────────────────────
  3614.  
  3615.   1) Enable channel mask
  3616.       OUT     00Ah,004h OR cChannel              ( 8-bit)
  3617.      ·····················································
  3618.       OUT     0D4h,004h OR cChannel              (16-bit)
  3619.  
  3620.   2) Clear byte pointer
  3621.       OUT     00Ch,...                           ( 8-bit)
  3622.      ·····················································
  3623.       OUT     0D8h,...                           (16-bit)
  3624.  
  3625.   3) Configure transfer mode
  3626.       OUT     00Bh,cMode OR cChannel             ( 8-bit)
  3627.      ·····················································
  3628.       OUT     0D6h,cMode OR cChannel             (16-bit)
  3629.  
  3630.   4) Write page address
  3631.       OUT    { 087h,083h,081h,082h },cPage       ( 8-bit)
  3632.      ·····················································
  3633.       OUT    { 08Fh,08Bh,089h,08Ah },cPage       (16-bit)
  3634.  
  3635.   5) Write offset address
  3636.       OUT    { 000h,002h,004h,006h },cAddressLo  ( 8-bit)
  3637.       OUT    { 000h,002h,004h,006h },cAddressHi
  3638.      ·····················································
  3639.       OUT    { 0C0h,0C4h,0C8h,0CCh },cAddressLo  (16-bit)
  3640.       OUT    { 0C0h,0C4h,0C8h,0CCh },cAddressHi
  3641.  
  3642.   6) Write length - 1
  3643.       OUT    { 001h,003h,005h,007h },cLengthLo   ( 8-bit)
  3644.       OUT    { 001h,003h,005h,007h },cLengthHi
  3645.      ·····················································
  3646.       OUT    { 0C2h,0C6h,0CAh,0CEh },cLengthLo   (16-bit)
  3647.       OUT    { 0C2h,0C6h,0CAh,0CEh },cLengthHi
  3648.  
  3649.   7) Disable channel mask
  3650.       OUT     00Ah,cChannel                      ( 8-bit)
  3651.      ·····················································
  3652.       OUT     0D4h,cChannel                      (16-bit)
  3653.  
  3654. ------------------------------------------------------------------------------
  3655.  000h       Channel 0 Address, 8-bit                    Read/Write  XT
  3656.  
  3657.     DESCRIPTION
  3658.      Programs channel transfer offset address (byte granular).
  3659.  
  3660.     PROCEDURE
  3661.      a) Output LSB of offset address (port 000h)
  3662.      b) Output MSB of offset address (port 000h)
  3663.  
  3664.     NOTES
  3665.      ■ Reading port retrieves current transfer offset address.
  3666.  
  3667.     SEE ALSO
  3668.      087h   Channel 0 Page, 8-bit               Write
  3669.      001h   Channel 0 Length, 8-bit             Read/Write
  3670. ------------------------------------------------------------------------------
  3671.  001h       Channel 0 Length, 8-bit                     Read/Write  XT
  3672.  
  3673.     DESCRIPTION
  3674.      Programs channel transfer length.
  3675.  
  3676.     PROCEDURE
  3677.      a) Output LSB of length (port 001h)
  3678.      b) Output MSB of length (port 001h)
  3679.  
  3680.     LENGTH = BYTES - 1
  3681.  
  3682.     NOTES
  3683.      ■ Reading port retrieves transfer length remaining.
  3684.  
  3685.     SEE ALSO
  3686.      087h   Channel 0 Page, 8-bit               Write
  3687.      000h   Channel 0 Address, 8-bit            Read/Write
  3688. ------------------------------------------------------------------------------
  3689.  002h       Channel 1 Address, 8-bit                    Read/Write  XT
  3690.  
  3691.     DESCRIPTION
  3692.      Programs channel transfer offset address (byte granular).
  3693.  
  3694.     PROCEDURE
  3695.      a) Output LSB of offset address (port 002h)
  3696.      b) Output MSB of offset address (port 002h)
  3697.  
  3698.     NOTES
  3699.      ■ Reading port retrieves current transfer offset address.
  3700.  
  3701.     SEE ALSO
  3702.      083h   Channel 1 Page, 8-bit               Write
  3703.      003h   Channel 1 Length, 8-bit             Read/Write
  3704. ------------------------------------------------------------------------------
  3705.  003h       Channel 1 Length, 8-bit                     Read/Write  XT
  3706.  
  3707.     DESCRIPTION
  3708.      Programs channel transfer length.
  3709.  
  3710.     PROCEDURE
  3711.      a) Output LSB of length (port 003h)
  3712.      b) Output MSB of length (port 003h)
  3713.  
  3714.     LENGTH = BYTES - 1
  3715.  
  3716.     NOTES
  3717.      ■ Reading port retrieves transfer length remaining.
  3718.  
  3719.     SEE ALSO
  3720.      083h   Channel 1 Page, 8-bit               Write
  3721.      002h   Channel 1 Address, 8-bit            Read/Write
  3722. ------------------------------------------------------------------------------
  3723.  004h       Channel 2 Address, 8-bit                    Read/Write  XT
  3724.  
  3725.     DESCRIPTION
  3726.      Programs channel transfer offset address (byte granular).
  3727.  
  3728.     PROCEDURE
  3729.      a) Output LSB of offset address (port 004h)
  3730.      b) Output MSB of offset address (port 004h)
  3731.  
  3732.     NOTES
  3733.      ■ Reading port retrieves current transfer offset address.
  3734.  
  3735.     SEE ALSO
  3736.      081h   Channel 2 Page, 8-bit               Write
  3737.      005h   Channel 2 Length, 8-bit             Read/Write
  3738. ------------------------------------------------------------------------------
  3739.  005h       Channel 2 Length, 8-bit                     Read/Write  XT
  3740.  
  3741.     DESCRIPTION
  3742.      Programs channel transfer length.
  3743.  
  3744.     PROCEDURE
  3745.      a) Output LSB of length (port 005h)
  3746.      b) Output MSB of length (port 005h)
  3747.  
  3748.     LENGTH = BYTES - 1
  3749.  
  3750.     NOTES
  3751.      ■ Reading port retrieves transfer length remaining.
  3752.  
  3753.     SEE ALSO
  3754.      081h   Channel 2 Page, 8-bit               Write
  3755.      004h   Channel 2 Address, 8-bit            Read/Write
  3756. ------------------------------------------------------------------------------
  3757.  006h       Channel 3 Address, 8-bit                    Read/Write  XT
  3758.  
  3759.     DESCRIPTION
  3760.      Programs channel transfer offset address (byte granular).
  3761.  
  3762.     PROCEDURE
  3763.      a) Output LSB of offset address (port 006h)
  3764.      b) Output MSB of offset address (port 006h)
  3765.  
  3766.     NOTES
  3767.      ■ Reading port retrieves current transfer offset address.
  3768.  
  3769.     SEE ALSO
  3770.      082h   Channel 3 Page, 8-bit               Write
  3771.      007h   Channel 3 Length, 8-bit             Read/Write
  3772. ------------------------------------------------------------------------------
  3773.  007h       Channel 3 Length, 8-bit                     Read/Write  XT
  3774.  
  3775.     DESCRIPTION
  3776.      Programs channel transfer length.
  3777.  
  3778.     PROCEDURE
  3779.      a) Output LSB of length (port 007h)
  3780.      b) Output MSB of length (port 007h)
  3781.  
  3782.     LENGTH = BYTES - 1
  3783.  
  3784.     NOTES
  3785.      ■ Reading port retrieves transfer length remaining.
  3786.  
  3787.     SEE ALSO
  3788.      082h   Channel 3 Page, 8-bit               Write
  3789.      006h   Channel 3 Address, 8-bit            Read/Write
  3790. ------------------------------------------------------------------------------
  3791.  008h       Status Register, 8-bit                      Read        XT
  3792.  
  3793.     DESCRIPTION
  3794.      Controller channel status register.
  3795.  
  3796.     STATUS BYTE
  3797.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3798.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  3799.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3800.        │   │   │   │   │   │   │   └─── Channel 0 Terminal Count (1 = Reached)
  3801.        │   │   │   │   │   │   └─────── Channel 1 Terminal Count (1 = Reached)
  3802.        │   │   │   │   │   └─────────── Channel 2 Terminal Count (1 = Reached)
  3803.        │   │   │   │   └─────────────── Channel 3 Terminal Count (1 = Reached)
  3804.        │   │   │   └─────────────────── Channel 0 DREQ           (1 = Active )
  3805.        │   │   └─────────────────────── Channel 1 DREQ           (1 = Active )
  3806.        │   └─────────────────────────── Channel 2 DREQ           (1 = Active )
  3807.        └─────────────────────────────── Channel 3 DREQ           (1 = Active )
  3808.  
  3809.     NOTES
  3810.      ■ Terminal count bit indicates transfer complete.
  3811. ------------------------------------------------------------------------------
  3812.  008h       Command Register, 8-bit                     Write       XT
  3813.  
  3814.     DESCRIPTION
  3815.      Controller configuration register.
  3816.  
  3817.     COMMAND BYTE
  3818.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3819.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  3820.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3821.        │   │   │   │   │   │   │   └─── Mem-Mem Transfer         (1 = Enable)
  3822.        │   │   │   │   │   │   └─────── Channel 0-4 Address Hold (1 = Enable)
  3823.        │   │   │   │   │   └─────────── Controller (0 = Enable, 1 = Disable)
  3824.        │   │   │   │   └─────────────── Timing     (0 = Normal, 1 = Compressed)
  3825.        │   │   │   └─────────────────── Priority   (0 = Fixed, 1 = Rotating)
  3826.        │   │   └─────────────────────── Write Mode (0 = Late,  1 = Extended)
  3827.        │   └─────────────────────────── DREQ Active Sensing (0 = Low, 1 = High)
  3828.        └─────────────────────────────── DACK Active Sensing (0 = Low, 1 = High)
  3829. ------------------------------------------------------------------------------
  3830.  009h       Request Register, 8-bit                     Write       XT
  3831.  
  3832.     DESCRIPTION
  3833.      ???
  3834.  
  3835.     REQUEST BYTE
  3836.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3837.      ║[7]│[6]│[5]│[4]│[3]│ 2 │ 1 │ 0 ║
  3838.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3839.        │   │   │   │   │   │   │   └─┬─ Channel Select
  3840.        │   │   │   │   │   │   └─────┘
  3841.        │   │   │   │   │   └─────────── Channel Request (1 = Enable)
  3842.        │   │   │   │   └─────────────┬─ Reserved (0)
  3843.        │   │   │   └─────────────────┤
  3844.        │   │   └─────────────────────┤
  3845.        │   └─────────────────────────┤
  3846.        └─────────────────────────────┘
  3847. ------------------------------------------------------------------------------
  3848.  00Ah       Single Mask Register, 8-bit                 Write       XT
  3849.  
  3850.     DESCRIPTION
  3851.      Selects individual DMA channel, and enables or disables it.
  3852.  
  3853.     MASK BYTE
  3854.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3855.      ║[7]│[6]│[5]│[4]│[3]│ 2 │ 1 │ 0 ║
  3856.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3857.        │   │   │   │   │   │   │   └─┬─ Channel Select
  3858.        │   │   │   │   │   │   └─────┘
  3859.        │   │   │   │   │   └─────────── Channel Mask (0 = Clear, 1 = Set)
  3860.        │   │   │   │   └─────────────┬─ Reserved (0)
  3861.        │   │   │   └─────────────────┤
  3862.        │   │   └─────────────────────┤
  3863.        │   └─────────────────────────┤
  3864.        └─────────────────────────────┘
  3865.  
  3866.     NOTES
  3867.      ■ Program the mask register before programming channel.
  3868.  
  3869.     SEE ALSO
  3870.      00Fh   Master Mask Register, 8-bit         Write
  3871. ------------------------------------------------------------------------------
  3872.  00Bh       Mode Register, 8-bit                        Write       XT
  3873.  
  3874.     DESCRIPTION
  3875.      Selects and configures individual DMA channel.
  3876.  
  3877.     MODE BYTE
  3878.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3879.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  3880.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3881.        │   │   │   │   │   │   │   └─┬─ Channel Select
  3882.        │   │   │   │   │   │   └─────┘
  3883.        │   │   │   │   │   └─────────┬─ Operation       (0 = Verify,
  3884.        │   │   │   │   └─────────────┘                   1 = Write, 2 = Read)
  3885.        │   │   │   └─────────────────── Auto-Initialize (0 = Off, 1 = On)
  3886.        │   │   └─────────────────────── Direction       (0 = Increment)
  3887.        │   └─────────────────────────┬─ Operation Mode  (0 = Demand,1 = Single,
  3888.        └─────────────────────────────┘                   2 = Block, 3 = Cascade)
  3889.  
  3890.     NOTES
  3891.      ■ Demand mode
  3892.  
  3893.          ╓───────┐   ┌──────────────────┐  ┌───┐  ┌──────┐   ┌───────╖
  3894.          ║  DREQ ├───┤ TERMINAL COUNT-1 ├──┤ ? ├──│ DACK ├───│ DONE  ║
  3895.          ╙──────┬┘Y  └──────────────────┘  └─┬─┘N └──┬──┬┘   └───────╜
  3896.              └──┘N   │                       │Y   └──┘N │Y
  3897.                      │           ┌────┐    ┌─┴─┐        │
  3898.                      └───────────┤DREQ│────┤EOP├────────┘
  3899.                                 Y└───┬┘   N└───┘Y
  3900.                                   └──┘N
  3901.  
  3902.         Transfer begins as soon as DREQ becomes active and continues until
  3903.          terminal count is reached or an external end-of-process (EOP) is
  3904.          signalled.  In auto-initialized mode, only an external EOP stops
  3905.          the transfer.  Deactivating DREQ pauses the transfer, reactivating
  3906.          it continues.
  3907.  
  3908.  
  3909.      ■ Single mode
  3910.  
  3911.          ╓───────┐   ┌──────────────────┐  ┌───┐             ┌───────╖
  3912.          ║  DREQ ├───┤ TERMINAL COUNT-1 ├──┤ ? ├─────────────│ DONE  ║
  3913.          ╙───────┘   └──────────────────┘  └─┬─┘N            └───────╜
  3914.                      │                       │Y
  3915.                      │ ┌──────┐  ┌────┐      │
  3916.                      └─┤ DACK │──┤DREQ│──────┘
  3917.                       Y└───┬──┘ Y└───┬┘
  3918.                         └──┘N     └──┘N
  3919.  
  3920.         Transfer begins as soon as DREQ becomes active and continues until
  3921.          the next byte is transferred and loops until terminal count.
  3922.  
  3923.  
  3924.      ■ Block mode
  3925.  
  3926.          ╓───────┐   ┌──────────────────┐  ┌───┐  ┌──────┐   ┌───────╖
  3927.          ║  DREQ ├───┤ TERMINAL COUNT-1 ├──┤ ? ├──│ DACK ├───│ DONE  ║
  3928.          ╙──────┬┘Y  └──────────────────┘  └─┬─┘N └──┬──┬┘   └───────╜
  3929.              └──┘N   │                       │Y   └──┘N │Y
  3930.                      │                     ┌─┴─┐        │
  3931.                      └─────────────────────┤EOP├────────┘
  3932.                                           N└───┘Y
  3933.  
  3934.         Transfer begins as soon as DREQ becomes active and continues until
  3935.          terminal count is reached or an external end-of-process (EOP) is
  3936.          signalled.  In auto-initialized mode, only an external EOP stops
  3937.          the transfer.
  3938.  
  3939.  
  3940.      ■ Cascade mode
  3941.  
  3942.         Reserved for chaining DMA controllers.
  3943. ------------------------------------------------------------------------------
  3944.  00Ch       Clear Byte Pointer Register, 8-bit          Write       XT
  3945.  
  3946.     DESCRIPTION
  3947.      Resets 8-bit DMA controller address pointer on output (any value).
  3948. ------------------------------------------------------------------------------
  3949.  00Dh       Temporary Register, 8-bit                   Read        XT
  3950.  
  3951.     DESCRIPTION
  3952.      Contains memory-to-memory data bytes.
  3953. ------------------------------------------------------------------------------
  3954.  00Dh       Master Reset Register, 8-bit                Write       XT
  3955.  
  3956.     DESCRIPTION
  3957.      Resets 8-bit DMA controller and all its channels on output (any value).
  3958.  
  3959.     SEE ALSO
  3960.      00Eh   Master Enable Register, 8-bit       Write
  3961. ------------------------------------------------------------------------------
  3962.  00Eh       Master Enable Register, 8-bit               Write       XT
  3963.  
  3964.     DESCRIPTION
  3965.      Enables all 8-bit DMA controller channels on output (any value).
  3966.  
  3967.     SEE ALSO
  3968.      00Dh   Master Reset Register, 8-bit        Write
  3969. ------------------------------------------------------------------------------
  3970.  00Fh       Master Mask Register, 8-bit                 Write       XT
  3971.  
  3972.     DESCRIPTION
  3973.      Selects multiple DMA channels, enabling or disabling them.
  3974.  
  3975.     MASK BYTE
  3976.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3977.      ║[7]│[6]│[5]│[4]│ 3 │ 2 │ 1 │ 0 ║
  3978.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  3979.        │   │   │   │   │   │   │   └─── Channel 0 (0 = Enable, 1 = Disable)
  3980.        │   │   │   │   │   │   └─────── Channel 1 (0 = Enable, 1 = Disable)
  3981.        │   │   │   │   │   └─────────── Channel 2 (0 = Enable, 1 = Disable)
  3982.        │   │   │   │   └─────────────── Channel 3 (0 = Enable, 1 = Disable)
  3983.        │   │   │   └─────────────────┬─ Reserved (0)
  3984.        │   │   └─────────────────────┤
  3985.        │   └─────────────────────────┤
  3986.        └─────────────────────────────┘
  3987.  
  3988.     SEE ALSO
  3989.      00Ah   Single Mask Register, 8-bit         Write
  3990. ------------------------------------------------------------------------------
  3991.  081h       Channel 2 Page, 8-bit                       Write       XT
  3992.  
  3993.     DESCRIPTION
  3994.      Programs channel page address.
  3995.  
  3996.     PAGE BYTE
  3997.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  3998.      ║[7]│[6]│[5]│[4]│ 3 │ 2 │ 1 │ 0 ║
  3999.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  4000.        │   │   │   │   │   │   │   └─┬─ Page, Channel 2 (64K granular)
  4001.        │   │   │   │   │   │   └─────┤
  4002.        │   │   │   │   │   └─────────┤
  4003.        │   │   │   │   └─────────────┘
  4004.        │   │   │   └─────────────────┬─ Reserved (0)
  4005.        │   │   └─────────────────────┤
  4006.        │   └─────────────────────────┤
  4007.        └─────────────────────────────┘
  4008.  
  4009.     NOTES
  4010.      ■ Page addressing allows access to 1M of physical memory with 8-bit DMA.
  4011.  
  4012.     SEE ALSO
  4013.      004h   Channel 2 Address, 8-bit            Read/Write
  4014.      005h   Channel 2 Length, 8-bit             Read/Write
  4015. ------------------------------------------------------------------------------
  4016.  082h       Channel 3 Page, 8-bit                       Write       XT
  4017.  
  4018.     DESCRIPTION
  4019.      Programs channel page address.
  4020.  
  4021.     PAGE BYTE
  4022.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  4023.      ║[7]│[6]│[5]│[4]│ 3 │ 2 │ 1 │ 0 ║
  4024.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  4025.        │   │   │   │   │   │   │   └─┬─ Page, Channel 3 (64K granular)
  4026.        │   │   │   │   │   │   └─────┤
  4027.        │   │   │   │   │   └─────────┤
  4028.        │   │   │   │   └─────────────┘
  4029.        │   │   │   └─────────────────┬─ Reserved (0)
  4030.        │   │   └─────────────────────┤
  4031.        │   └─────────────────────────┤
  4032.        └─────────────────────────────┘
  4033.  
  4034.     NOTES
  4035.      ■ Page addressing allows access to 1M of physical memory with 8-bit DMA.
  4036.  
  4037.     SEE ALSO
  4038.      006h   Channel 3 Address, 8-bit            Read/Write
  4039.      007h   Channel 3 Length, 8-bit             Read/Write
  4040. ------------------------------------------------------------------------------
  4041.  083h       Channel 1 Page, 8-bit                       Write       XT
  4042.  
  4043.     DESCRIPTION
  4044.      Programs channel page address.
  4045.  
  4046.     PAGE BYTE
  4047.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  4048.      ║[7]│[6]│[5]│[4]│ 3 │ 2 │ 1 │ 0 ║
  4049.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  4050.        │   │   │   │   │   │   │   └─┬─ Page, Channel 1 (64K granular)
  4051.        │   │   │   │   │   │   └─────┤
  4052.        │   │   │   │   │   └─────────┤
  4053.        │   │   │   │   └─────────────┘
  4054.        │   │   │   └─────────────────┬─ Reserved (0)
  4055.        │   │   └─────────────────────┤
  4056.        │   └─────────────────────────┤
  4057.        └─────────────────────────────┘
  4058.  
  4059.     NOTES
  4060.      ■ Page addressing allows access to 1M of physical memory with 8-bit DMA.
  4061.  
  4062.     SEE ALSO
  4063.      002h   Channel 1 Address, 8-bit            Read/Write
  4064.      003h   Channel 1 Length, 8-bit             Read/Write
  4065. ------------------------------------------------------------------------------
  4066.  087h       Channel 0 Page, 8-bit                       Write       XT
  4067.  
  4068.     DESCRIPTION
  4069.      Programs channel page address.
  4070.  
  4071.     PAGE BYTE
  4072.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  4073.      ║[7]│[6]│[5]│[4]│ 3 │ 2 │ 1 │ 0 ║
  4074.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  4075.        │   │   │   │   │   │   │   └─┬─ Page, Channel 0 (64K granular)
  4076.        │   │   │   │   │   │   └─────┤
  4077.        │   │   │   │   │   └─────────┤
  4078.        │   │   │   │   └─────────────┘
  4079.        │   │   │   └─────────────────┬─ Reserved (0)
  4080.        │   │   └─────────────────────┤
  4081.        │   └─────────────────────────┤
  4082.        └─────────────────────────────┘
  4083.  
  4084.     NOTES
  4085.      ■ Page addressing allows access to 1M of physical memory with 8-bit DMA.
  4086.  
  4087.     SEE ALSO
  4088.      000h   Channel 0 Address, 8-bit            Read/Write
  4089.      001h   Channel 0 Length, 8-bit             Read/Write
  4090. ------------------------------------------------------------------------------
  4091.  089h       Channel 6 Page, 16-bit                      Write       AT
  4092.  
  4093.     DESCRIPTION
  4094.      Programs channel page address.
  4095.  
  4096.     PAGE BYTE
  4097.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  4098.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  4099.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  4100.        │   │   │   │   │   │   │   └─┬─ Page, Channel 6 (128K granular)
  4101.        │   │   │   │   │   │   └─────┤
  4102.        │   │   │   │   │   └─────────┤
  4103.        │   │   │   │   └─────────────┤
  4104.        │   │   │   └─────────────────┤
  4105.        │   │   └─────────────────────┤
  4106.        │   └─────────────────────────┤
  4107.        └─────────────────────────────┘
  4108.  
  4109.     NOTES
  4110.      ■ Page addressing allows access to 16M of physical memory with 16-bit DMA.
  4111.  
  4112.     SEE ALSO
  4113.      0C8h   Channel 6 Address, 16-bit           Read/Write
  4114.      0CAh   Channel 6 Length, 16-bit            Read/Write
  4115. ------------------------------------------------------------------------------
  4116.  08Ah       Channel 7 Page, 16-bit                      Write       AT
  4117.  
  4118.     DESCRIPTION
  4119.      Programs channel page address.
  4120.  
  4121.     PAGE BYTE
  4122.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  4123.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  4124.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  4125.        │   │   │   │   │   │   │   └─┬─ Page, Channel 7 (128K granular)
  4126.        │   │   │   │   │   │   └─────┤
  4127.        │   │   │   │   │   └─────────┤
  4128.        │   │   │   │   └─────────────┤
  4129.        │   │   │   └─────────────────┤
  4130.        │   │   └─────────────────────┤
  4131.        │   └─────────────────────────┤
  4132.        └─────────────────────────────┘
  4133.  
  4134.     NOTES
  4135.      ■ Page addressing allows access to 16M of physical memory with 16-bit DMA.
  4136.  
  4137.     SEE ALSO
  4138.      0CCh   Channel 7 Address, 16-bit           Read/Write
  4139.      0CEh   Channel 7 Length, 16-bit            Read/Write
  4140. ------------------------------------------------------------------------------
  4141.  08Bh       Channel 5 Page, 16-bit                      Write       AT
  4142.  
  4143.     DESCRIPTION
  4144.      Programs channel page address.
  4145.  
  4146.     PAGE BYTE
  4147.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  4148.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  4149.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  4150.        │   │   │   │   │   │   │   └─┬─ Page, Channel 5 (128K granular)
  4151.        │   │   │   │   │   │   └─────┤
  4152.        │   │   │   │   │   └─────────┤
  4153.        │   │   │   │   └─────────────┤
  4154.        │   │   │   └─────────────────┤
  4155.        │   │   └─────────────────────┤
  4156.        │   └─────────────────────────┤
  4157.        └─────────────────────────────┘
  4158.  
  4159.     NOTES
  4160.      ■ Page addressing allows access to 16M of physical memory with 16-bit DMA.
  4161.  
  4162.     SEE ALSO
  4163.      0C4h   Channel 5 Address, 16-bit           Read/Write
  4164.      0C6h   Channel 5 Length, 16-bit            Read/Write
  4165. ------------------------------------------------------------------------------
  4166.  08Fh       Channel 4 Page, 16-bit                      Write       AT
  4167.  
  4168.     DESCRIPTION
  4169.      Programs channel page address.
  4170.  
  4171.     PAGE BYTE
  4172.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  4173.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  4174.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  4175.        │   │   │   │   │   │   │   └─┬─ Page, Channel 4 (128K granular)
  4176.        │   │   │   │   │   │   └─────┤
  4177.        │   │   │   │   │   └─────────┤
  4178.        │   │   │   │   └─────────────┤
  4179.        │   │   │   └─────────────────┤
  4180.        │   │   └─────────────────────┤
  4181.        │   └─────────────────────────┤
  4182.        └─────────────────────────────┘
  4183.  
  4184.     NOTES
  4185.      ■ Reserved channel for cascading DMA controllers.
  4186.      ■ Page addressing allows access to 16M of physical memory with 16-bit DMA.
  4187.  
  4188.     SEE ALSO
  4189.      0C0h   Channel 4 Address, 16-bit           Read/Write
  4190.      0C2h   Channel 4 Length, 16-bit            Read/Write
  4191. ------------------------------------------------------------------------------
  4192.  0C0h       Channel 4 Address, 16-bit                   Read/Write  AT
  4193.  
  4194.     DESCRIPTION
  4195.      Programs channel transfer offset address (word granular).
  4196.  
  4197.     PROCEDURE
  4198.      a) Output LSB of offset address/2 (port 0C0h)
  4199.      b) Output MSB of offset address/2 (port 0C0h)
  4200.  
  4201.     NOTES
  4202.      ■ Reading port retrieves current transfer offset address.
  4203.  
  4204.     SEE ALSO
  4205.      08Fh   Channel 4 Page, 16-bit              Write
  4206.      0C2h   Channel 4 Length, 16-bit            Read/Write
  4207. ------------------------------------------------------------------------------
  4208.  0C2h       Channel 4 Length, 16-bit                    Read/Write  AT
  4209.  
  4210.     DESCRIPTION
  4211.      Programs channel transfer length.
  4212.  
  4213.     PROCEDURE
  4214.      a) Output LSB of length (port 0C2h)
  4215.      b) Output MSB of length (port 0C2h)
  4216.  
  4217.     LENGTH = BYTES/2 - 1
  4218.  
  4219.     NOTES
  4220.      ■ Reading port retrieves transfer length remaining.
  4221.  
  4222.     SEE ALSO
  4223.      08Fh   Channel 4 Page, 16-bit              Write
  4224.      0C0h   Channel 4 Address, 16-bit           Read/Write
  4225. ------------------------------------------------------------------------------
  4226.  0C4h       Channel 5 Address, 16-bit                   Read/Write  AT
  4227.  
  4228.     DESCRIPTION
  4229.      Programs channel transfer offset address (word granular).
  4230.  
  4231.     PROCEDURE
  4232.      a) Output LSB of offset address/2 (port 0C4h)
  4233.      b) Output MSB of offset address/2 (port 0C4h)
  4234.  
  4235.     NOTES
  4236.      ■ Reading port retrieves current transfer offset address.
  4237.  
  4238.     SEE ALSO
  4239.      08Bh   Channel 5 Page, 16-bit              Write
  4240.      0C6h   Channel 5 Length, 16-bit            Read/Write
  4241. ------------------------------------------------------------------------------
  4242.  0C6h       Channel 5 Length, 16-bit                    Read/Write  AT
  4243.  
  4244.     DESCRIPTION
  4245.      Programs channel transfer length.
  4246.  
  4247.     PROCEDURE
  4248.      a) Output LSB of length (port 0C6h)
  4249.      b) Output MSB of length (port 0C6h)
  4250.  
  4251.     LENGTH = BYTES/2 - 1
  4252.  
  4253.     NOTES
  4254.      ■ Reading port retrieves transfer length remaining.
  4255.  
  4256.     SEE ALSO
  4257.      08Bh   Channel 5 Page, 16-bit              Write
  4258.      0C4h   Channel 5 Address, 16-bit           Read/Write
  4259. ------------------------------------------------------------------------------
  4260.  0C8h       Channel 6 Address, 16-bit                   Read/Write  AT
  4261.  
  4262.     DESCRIPTION
  4263.      Programs channel transfer offset address (word granular).
  4264.  
  4265.     PROCEDURE
  4266.      a) Output LSB of offset address/2 (port 0C8h)
  4267.      b) Output MSB of offset address/2 (port 0C8h)
  4268.  
  4269.     NOTES
  4270.      ■ Reading port retrieves current transfer offset address.
  4271.  
  4272.     SEE ALSO
  4273.      089h   Channel 6 Page, 16-bit              Write
  4274.      0CAh   Channel 6 Length, 16-bit            Read/Write
  4275. ------------------------------------------------------------------------------
  4276.  0CAh       Channel 6 Length, 16-bit                    Read/Write  AT
  4277.  
  4278.     DESCRIPTION
  4279.      Programs channel transfer length.
  4280.  
  4281.     PROCEDURE
  4282.      a) Output LSB of length (port 0CAh)
  4283.      b) Output MSB of length (port 0CAh)
  4284.  
  4285.     LENGTH = BYTES/2 - 1
  4286.  
  4287.     NOTES
  4288.      ■ Reading port retrieves transfer length remaining.
  4289.  
  4290.     SEE ALSO
  4291.      089h   Channel 6 Page, 16-bit              Write
  4292.      0C8h   Channel 6 Address, 16-bit           Read/Write
  4293. ------------------------------------------------------------------------------
  4294.  0CCh       Channel 7 Address, 16-bit                   Read/Write  AT
  4295.  
  4296.     DESCRIPTION
  4297.      Programs channel transfer offset address (word granular).
  4298.  
  4299.     PROCEDURE
  4300.      a) Output LSB of offset address/2 (port 0CEh)
  4301.      b) Output MSB of offset address/2 (port 0CEh)
  4302.  
  4303.     NOTES
  4304.      ■ Reading port retrieves current transfer offset address.
  4305.  
  4306.     SEE ALSO
  4307.      08Ah   Channel 7 Page, 16-bit              Write
  4308.      0CEh   Channel 7 Length, 16-bit            Read/Write
  4309. ------------------------------------------------------------------------------
  4310.  0CEh       Channel 7 Length, 16-bit                    Read/Write  AT
  4311.  
  4312.     DESCRIPTION
  4313.      Programs channel transfer length.
  4314.  
  4315.     PROCEDURE
  4316.      a) Output LSB of length (port 0CEh)
  4317.      b) Output MSB of length (port 0CEh)
  4318.  
  4319.     LENGTH = BYTES/2 - 1
  4320.  
  4321.     NOTES
  4322.      ■ Reading port retrieves transfer length remaining.
  4323.  
  4324.     SEE ALSO
  4325.      08Ah   Channel 7 Page, 16-bit              Write
  4326.      0CCh   Channel 7 Address, 16-bit           Read/Write
  4327. ------------------------------------------------------------------------------
  4328.  0D0h       Status Register, 16-bit                     Read        AT
  4329.  
  4330.     DESCRIPTION
  4331.      Controller channel status register.
  4332.  
  4333.     STATUS BYTE
  4334.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  4335.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  4336.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  4337.        │   │   │   │   │   │   │   └─── Channel 4 Terminal Count (1 = Reached)
  4338.        │   │   │   │   │   │   └─────── Channel 5 Terminal Count (1 = Reached)
  4339.        │   │   │   │   │   └─────────── Channel 6 Terminal Count (1 = Reached)
  4340.        │   │   │   │   └─────────────── Channel 7 Terminal Count (1 = Reached)
  4341.        │   │   │   └─────────────────── Channel 4 DREQ           (1 = Active )
  4342.        │   │   └─────────────────────── Channel 5 DREQ           (1 = Active )
  4343.        │   └─────────────────────────── Channel 6 DREQ           (1 = Active )
  4344.        └─────────────────────────────── Channel 7 DREQ           (1 = Active )
  4345.  
  4346.     NOTES
  4347.      ■ Terminal count bit indicates transfer complete.
  4348. ------------------------------------------------------------------------------
  4349.  0D0h       Command Register, 16-bit                    Write       AT
  4350.  
  4351.     DESCRIPTION
  4352.      Controller configuration register.
  4353.  
  4354.     COMMAND BYTE
  4355.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  4356.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  4357.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  4358.        │   │   │   │   │   │   │   └─── Mem-Mem Transfer         (1 = Enable)
  4359.        │   │   │   │   │   │   └─────── Channel 0-4 Address Hold (1 = Enable)
  4360.        │   │   │   │   │   └─────────── Controller (0 = Enable, 1 = Disable)
  4361.        │   │   │   │   └─────────────── Timing     (0 = Normal, 1 = Compressed)
  4362.        │   │   │   └─────────────────── Priority   (0 = Fixed, 1 = Rotating)
  4363.        │   │   └─────────────────────── Write Mode (0 = Late,  1 = Extended)
  4364.        │   └─────────────────────────── DREQ Active Sensing (0 = Low, 1 = High)
  4365.        └─────────────────────────────── DACK Active Sensing (0 = Low, 1 = High)
  4366. ------------------------------------------------------------------------------
  4367.  0D2h       Request Register, 16-bit                    Write       AT
  4368.  
  4369.     DESCRIPTION
  4370.      ???
  4371.  
  4372.     REQUEST BYTE
  4373.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  4374.      ║[7]│[6]│[5]│[4]│[3]│ 2 │ 1 │ 0 ║
  4375.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  4376.        │   │   │   │   │   │   │   └─┬─ Channel Select (-4)
  4377.        │   │   │   │   │   │   └─────┘
  4378.        │   │   │   │   │   └─────────── Channel Request (1 = Enable)
  4379.        │   │   │   │   └─────────────┬─ Reserved (0)
  4380.        │   │   │   └─────────────────┤
  4381.        │   │   └─────────────────────┤
  4382.        │   └─────────────────────────┤
  4383.        └─────────────────────────────┘
  4384. ------------------------------------------------------------------------------
  4385.  0D4h       Single Mask Register, 16-bit                Write       AT
  4386.  
  4387.     DESCRIPTION
  4388.      Selects individual DMA channel, and enables or disables it.
  4389.  
  4390.     MASK BYTE
  4391.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  4392.      ║[7]│[6]│[5]│[4]│[3]│ 2 │ 1 │ 0 ║
  4393.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  4394.        │   │   │   │   │   │   │   └─┬─ Channel Select (-4)
  4395.        │   │   │   │   │   │   └─────┘
  4396.        │   │   │   │   │   └─────────── Channel Mask (0 = Clear, 1 = Set)
  4397.        │   │   │   │   └─────────────┬─ Reserved (0)
  4398.        │   │   │   └─────────────────┤
  4399.        │   │   └─────────────────────┤
  4400.        │   └─────────────────────────┤
  4401.        └─────────────────────────────┘
  4402.  
  4403.     NOTES
  4404.      ■ Program the mask register before programming channel.
  4405.  
  4406.     SEE ALSO
  4407.      0DEh   Master Mask Register, 16-bit        Write
  4408. ------------------------------------------------------------------------------
  4409.  0D6h       Mode Register, 16-bit                       Write       AT
  4410.  
  4411.     DESCRIPTION
  4412.      Selects and configures individual DMA channel.
  4413.  
  4414.     MODE BYTE
  4415.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  4416.      ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
  4417.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  4418.        │   │   │   │   │   │   │   └─┬─ Channel Select (-4)
  4419.        │   │   │   │   │   │   └─────┘
  4420.        │   │   │   │   │   └─────────┬─ Operation       (0 = Verify,
  4421.        │   │   │   │   └─────────────┘                   1 = Write, 2 = Read)
  4422.        │   │   │   └─────────────────── Auto-Initialize (0 = Off, 1 = On)
  4423.        │   │   └─────────────────────── Direction       (0 = Increment)
  4424.        │   └─────────────────────────┬─ Operation Mode  (0 = Demand,1 = Single,
  4425.        └─────────────────────────────┘                   2 = Block, 3 = Cascade)
  4426.  
  4427.     NOTES
  4428.      ■ See register 00Bh notes for description of modes.
  4429. ------------------------------------------------------------------------------
  4430.  0D8h       Clear Byte Pointer Register, 16-bit         Write       AT
  4431.  
  4432.     DESCRIPTION
  4433.      Resets 16-bit DMA controller address pointer on output (any value).
  4434. ------------------------------------------------------------------------------
  4435.  0DAh       Temporary Register, 16-bit                  Read        AT
  4436.  
  4437.     DESCRIPTION
  4438.      Contains memory-to-memory data words.
  4439.  
  4440.     NOTES
  4441.      ■ Reserved for cascading DMA controllers on AT architecture.
  4442. ------------------------------------------------------------------------------
  4443.  0DAh       Master Reset Register, 16-bit               Write       AT
  4444.  
  4445.     DESCRIPTION
  4446.      Resets 16-bit DMA controller and all its channels on output (any value).
  4447.  
  4448.     SEE ALSO
  4449.      0DCh   Master Enable Register, 16-bit      Write
  4450. ------------------------------------------------------------------------------
  4451.  0DCh       Master Enable Register, 16-bit              Write       AT
  4452.  
  4453.     DESCRIPTION
  4454.      Enables all 16-bit DMA controller channels on output (any value).
  4455.  
  4456.     SEE ALSO
  4457.      0DAh   Master Reset Register, 16-bit       Write
  4458. ------------------------------------------------------------------------------
  4459.  0DEh       Master Mask Register, 16-bit                Write       AT
  4460.  
  4461.     DESCRIPTION
  4462.      Selects multiple DMA channels, enabling or disabling them.
  4463.  
  4464.     MASK BYTE
  4465.      ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
  4466.      ║[7]│[6]│[5]│[4]│ 3 │ 2 │ 1 │ 0 ║
  4467.      ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
  4468.        │   │   │   │   │   │   │   └─── Channel 4 (0 = Enable, 1 = Disable)
  4469.        │   │   │   │   │   │   └─────── Channel 5 (0 = Enable, 1 = Disable)
  4470.        │   │   │   │   │   └─────────── Channel 6 (0 = Enable, 1 = Disable)
  4471.        │   │   │   │   └─────────────── Channel 7 (0 = Enable, 1 = Disable)
  4472.        │   │   │   └─────────────────┬─ Reserved (0)
  4473.        │   │   └─────────────────────┤
  4474.        │   └─────────────────────────┤
  4475.        └─────────────────────────────┘
  4476.  
  4477.     SEE ALSO
  4478.      0D4h   Single Mask Register, 16-bit        Write
  4479.  
  4480.  
  4481. ==============================================================================
  4482.  GLOSSARY
  4483. ------------------------------------------------------------------------------
  4484.  
  4485.  Adaptive Differential Pulse Code Modulation (ADPCM)
  4486.  
  4487.   Creative Labs ADPCM does not follow the CCITT ADPCM recommendations,
  4488.   but does provide a similar quality compression scheme for 8-bit samples
  4489.   (down to 2, 2.6, or 4-bits per sample).
  4490.  
  4491.   Creative Labs ADPCM is not supported by many SoundBlaster clones.
  4492.  
  4493.  ·············································································
  4494.  
  4495.  Advanced Signal Processor (ASP, CSP)
  4496.  
  4497.   Creative Labs proprietary programmable signal processor.
  4498.  
  4499.   Although development tools for the ASP are scarce, Creative Labs has
  4500.   released demo software implementing QSound technology and various
  4501.   compression schemes (from IMA ADPCM to µ-law and α-law).
  4502.  
  4503.   Recently renamed from ASP to CSP (Creative Signal Processor) to avoid
  4504.   confusion with a U.S. company of the same name.
  4505.  
  4506.  ·············································································
  4507.  
  4508.  Aliasing
  4509.  
  4510.   Digital artifacts indicative of finite numerical representation, especially
  4511.   noticeble at areas of high deviation.
  4512.  
  4513.  ·············································································
  4514.  
  4515.  Amplitude
  4516.  
  4517.   Maximum departure of the value of an alternating current or wave from an
  4518.   average value.  In acoustics, amplitude is intimately related to loudness.
  4519.  
  4520.  ·············································································
  4521.  
  4522.  Amplitude Modulation (AM)
  4523.  
  4524.   Carrier wave amplitude modulation in response to the strength of a signal.
  4525.  
  4526.  ·············································································
  4527.  
  4528.  Analog
  4529.  
  4530.   Representation with periodic waves.  Contrast digital.
  4531.  
  4532.  ·············································································
  4533.  
  4534.  Analog-To-Digital Convertor (ADC)
  4535.  
  4536.   Device which converts from an analog signal (such as sound) to a digital one.
  4537.  
  4538.  ·············································································
  4539.  
  4540.  Auto-Initialize Mode (AI)
  4541.  
  4542.   Mode where DMA controller processes multiple blocks without explicit
  4543.   reprogramming.  Contrast single-cycle mode.
  4544.  
  4545.  ·············································································
  4546.  
  4547.  Bass
  4548.  
  4549.   Acoustic quality describing sounds of lower frequency in the spectrum.
  4550.  
  4551.  ·············································································
  4552.  
  4553.  Creative Music Synthesis??? (C/MS)
  4554.  
  4555.   Obsolete AM synthesizer chipset implementing twelve stereo sine generators
  4556.   modulated in predefined banks by one of four programmable noise generators.
  4557.  
  4558.   Originally implemented on the Creative Labs GameBlaster card; supported by
  4559.   the SoundBlaster 1.0 and 1.5 (as an upgrade option).
  4560.  
  4561.  ·············································································
  4562.  
  4563.  Decibel (dB)
  4564.  
  4565.   Unit of measurement describing the ratio of two acoustic, mechanical, or
  4566.   electrical signal strengths; expressed as ten times the common logarithm
  4567.   of their power ratio.
  4568.  
  4569.  ·············································································
  4570.  
  4571.  Digital
  4572.  
  4573.   Representation with finite numerical elements.  Contrast analog.
  4574.  
  4575.  ·············································································
  4576.  
  4577.  Digital Signal Processor (DSP)
  4578.  
  4579.   Device which performs mathematical operations across a digital waveform.
  4580.   SoundBlasters barely qualify, with only ADPCM to their name.
  4581.  
  4582.  ·············································································
  4583.  
  4584.  Digital-To-Analog Convertor (DAC)
  4585.  
  4586.   Device which converts from a digital signal to an analog one.
  4587.  
  4588.  ·············································································
  4589.  
  4590.  Direct Memory Access (DMA)
  4591.  
  4592.   Method of using external hardware to perform block memory copy operations
  4593.   so the central processing unit can be dedicated to more sophisticated tasks.
  4594.  
  4595.  ·············································································
  4596.  
  4597.  Frequency
  4598.  
  4599.   Number of repetitive occurences, or cycles, within a given time domain.
  4600.  
  4601.  ·············································································
  4602.  
  4603.  Frequency Modulation (FM)
  4604.  
  4605.   Carrier wave frequency modulation in response to a signal; resulting in
  4606.   decreased distortion levels.
  4607.  
  4608.  ·············································································
  4609.  
  4610.  Frequency Modulation Synthesis (FM Synthesis)
  4611.  
  4612.   Describes a method of synthesizing sound using a programmable carrier and
  4613.   one or more programmable frequency modulators.  Popularized by Fairlight.
  4614.  
  4615.   Yamaha OPL-hardware implementation is closer to phase modulation.
  4616.  
  4617.  ·············································································
  4618.  
  4619.  Gain
  4620.  
  4621.   Ratio of increase of input over output in an amplifier.
  4622.  
  4623.  ·············································································
  4624.  
  4625.  General MIDI
  4626.  
  4627.   Standardized 128-entry patch map and associated specifications.
  4628.   Patch quality differs greatly across implementations.
  4629.  
  4630.   Regulated by the MIDI Manufacturer's Association (MMA).
  4631.  
  4632.  ·············································································
  4633.  
  4634.  Hertz (Hz)
  4635.  
  4636.   Unit of frequency measurement describing number of cycles per second.
  4637.  
  4638.  ·············································································
  4639.  
  4640.  High Speed Mode
  4641.  
  4642.   SoundBlaster DMA transfer mode operating at a frequency greater than 23kHz,
  4643.   using up clocks cycles otherwise destined for DSP command interpretation.
  4644.  
  4645.   Obsolete on SoundBlaster 16, but supported. (unofficial)
  4646.  
  4647.  ·············································································
  4648.  
  4649.  Mixer
  4650.  
  4651.   SoundBlaster component analagous to an army of volume controls.
  4652.  
  4653.  ·············································································
  4654.  
  4655.  MPU-401
  4656.  
  4657.   Developed by Roland, the MPU-401 is the industry standard MIDI interface.
  4658.   It can operate either as an intelligent or a dumb UART.
  4659.  
  4660.  ·············································································
  4661.  
  4662.  Music Instrument Digital Interface (MIDI)
  4663.  
  4664.   Standard for communication between electronic musical instruments, related
  4665.   hardware, and digital computers.  Serial protocol operating at 38.4Kbps.
  4666.  
  4667.  ·············································································
  4668.  
  4669.  Nyquist Theorem
  4670.  
  4671.   Accurate reproduction of a signal demands that the sampling frequency be
  4672.   at least twice the rate of the highest frequency in the source signal.
  4673.  
  4674.  ·············································································
  4675.  
  4676.  Pulse Code Modulation (PCM)
  4677.  
  4678.   Digital sound reproduction method that outputs discrete amplitude values
  4679.   at a steady rate to produce an analog sound.
  4680.  
  4681.  ·············································································
  4682.  
  4683.  QSound (tm)
  4684.  
  4685.   Filtering technique providing a larger panning arc than traditional
  4686.   stereo techniques (180°).  Licensed by Creative Labs.
  4687.  
  4688.  ·············································································
  4689.  
  4690.  Sample
  4691.  
  4692.   Digital representation of analog signal.
  4693.  
  4694.  ·············································································
  4695.  
  4696.  Single Cycle Mode (SC)
  4697.  
  4698.   Mode where DMA controller processes a single block.  Contrast auto-init mode.
  4699.  
  4700.  ·············································································
  4701.  
  4702.  Treble
  4703.  
  4704.   Acoustic quality describing sounds of higher frequency in the spectrum.
  4705.  
  4706.  ·············································································
  4707.  
  4708.  Universal Asynchronous Receiver/Transmitter (UART)
  4709.  
  4710.   Device responsible for conversion to or from a serial bit stream.
  4711.  
  4712.  ·············································································
  4713.  
  4714.  Wave Table Synthesis
  4715.  
  4716.   Synthesis method employing sampled instruments and sounds as opposed to
  4717.    artifically generated sound effects.
  4718.  
  4719.  ·············································································
  4720.  
  4721. ==============================================================================
  4722.  ACKNOWLEDGEMENTS
  4723. ------------------------------------------------------------------------------
  4724.  Ron Arts, Chris Barrett, Hussam Eassa, Brandom Hume, Cornel Huth, 
  4725.  Draeden/VLA, Jeffery Lee, Alain Jacques, Jerry Joplin, Eckard Lehmann, 
  4726.  Juan Carlos Leon, Bob Manson, Tom Marshall, Richard Mulder, Josha Munnik, 
  4727.  Eric Oostendorp, Tino Riethmueller, Jim Roberts, Peter Roberts, 
  4728.  Jens-Uwe Rumstich, Daniel Sachs, Edward Schlunder, Peter Sprenger, 
  4729.  Heiko Stassburg, Mark Stehr, Jim Vieira
  4730.  
  4731. ==============================================================================
  4732.  REFERENCES
  4733. ------------------------------------------------------------------------------
  4734.  
  4735. STANDARDS
  4736.  ────────────────────────────────────────────────────────────────────────────
  4737.   CCITT G.721 - ADPCM @ 32 kbits/sec
  4738.   CCITT G.723 - ADPCM @ 24 and 40 kbits/sec
  4739.  ────────────────────────────────────────────────────────────────────────────
  4740.  
  4741. PUBLICATIONS
  4742.  ────────────────────────────────────────────────────────────────────────────
  4743.   MIDI Processing Unit MPU-401 Technical Reference v1.5
  4744.    Roland Corporation                                   Roland Corp.   1985
  4745.  ────────────────────────────────────────────────────────────────────────────
  4746.   Schaum's Outline: Theory and Problems of Acoustics
  4747.    William Seto                                         McGraw-Hill    1971
  4748.  ────────────────────────────────────────────────────────────────────────────
  4749.   Yamaha OPL2 Technical Reference                       CAT#: LSI-6MF2622
  4750.    Yamaha Corporation                                   Yamaha Corp.
  4751.   +1 408 437-3133 (USA)
  4752.  ────────────────────────────────────────────────────────────────────────────
  4753.   Yamaha OPL3 Technical Reference                       CAT#: LSI-2438120
  4754.    Yamaha Corporation                                   Yamaha Corp.
  4755.   +1 408 437-3133 (USA)
  4756.  ────────────────────────────────────────────────────────────────────────────
  4757.  
  4758. BOOKS
  4759.  ────────────────────────────────────────────────────────────────────────────
  4760.   The SoundBlaster Book                                 ISBN: 3-88745-560-6
  4761.    Josha Munnik, Eric Oostendorp                        SYBEX          1992
  4762.  ────────────────────────────────────────────────────────────────────────────
  4763.   Das SoundBlaster Profibuch                            ISBN: 3-89319-583-1
  4764.    Eckard Lehmann, Tino Riethmueller, Heiko Stassburg   Addison-Wesley 1993
  4765.  ────────────────────────────────────────────────────────────────────────────
  4766.  
  4767. FILES
  4768.  ────────────────────────────────────────────────────────────────────────────
  4769.   Audio File Formats FAQ                                AudioFormats.*
  4770.     Guido van Rossum
  4771.     ftp.cwi.nl::pub/audio                               TEXT
  4772.  ────────────────────────────────────────────────────────────────────────────
  4773.   DMA Programming Information                           VLA_DMA.ZIP      3K
  4774.     Draeden/VLA                                         1993
  4775.     x2ftp.oulu.fi::pub/msdos/programming/vla            TEXT
  4776.  ────────────────────────────────────────────────────────────────────────────
  4777.   Joystick Programming Information                      GAMEPORT.INF     3K
  4778.     Bill Frolik                                         1990
  4779.     x2ftp.oulu.fi::pub/msdos/programming/specs          TEXT
  4780.  ────────────────────────────────────────────────────────────────────────────
  4781.   MIDI Standards Documentation                          MIDI*.*
  4782.     Various
  4783.     ftp.cs.ruu.nl::/pub/MIDI/DOC                        TEXT
  4784.  ────────────────────────────────────────────────────────────────────────────
  4785.   OPL2 Programming Information                          ADLIB_SB.TXT    20K
  4786.     Jeffery Lee                                         1992
  4787.     x2ftp.oulu.fi::pub/msdos/programming/faq            TEXT
  4788.  ────────────────────────────────────────────────────────────────────────────
  4789.   OPL3 Programming Information                          OPL3_DOC.ARJ    18K
  4790.     Vladimir Arnost                                     1994
  4791.     x2ftp.oulu.fi::pub/msdos/programming/docs           TEXT, GIF
  4792.  ────────────────────────────────────────────────────────────────────────────
  4793.   PC Game Programmer's Enyclopedia v1.0                 PCGPE10.ZIP    702K
  4794.     Mark Feldman                                        1994
  4795.     x2ftp.oulu.fi::pub/msdos/programming/gpe            TEXT, PASCAL
  4796.  ────────────────────────────────────────────────────────────────────────────
  4797.   VBE/AI SDK v1.03                                      VAISDK.EXE     388K
  4798.     Video Electronic Standards Association              1994
  4799.     ftp.wi.leidenuniv.nl:/pub/audio/programming         TEXT, C
  4800.  ────────────────────────────────────────────────────────────────────────────
  4801.   Virtual DMA Specification (VDS)                       PW0519.ZIP      47K
  4802.     John Hagerson of Microsoft                          1992
  4803.     ftp.microsoft.com::Softlib/MSLFILES                 TEXT, WORD
  4804.  ────────────────────────────────────────────────────────────────────────────
  4805.  
  4806. SOURCE
  4807.  ────────────────────────────────────────────────────────────────────────────
  4808.   SoundBlaster Freedom Project v3.0                     SBF3.ZIP        85K
  4809.     Jeff Bird, Christopher Box                          1994
  4810.     x2ftp.oulu.fi::pub/msdos/programming/music          C, ASM
  4811.  ────────────────────────────────────────────────────────────────────────────
  4812.   SoundBlaster Programming v1.0                         SBPROG10.ZIP    36K
  4813.     Christopher Box                                     1993
  4814.     x2ftp.oulu.fi::pub/msdos/programming/music          C++, ASM
  4815.  ────────────────────────────────────────────────────────────────────────────
  4816.   SoundX SoundBlaster Library                           SOUNDX.ZIP      32K
  4817.     Peter Sprenger                                      1993
  4818.     x2ftp.oulu.fi::pub/msdos/programming/music          C, ASM
  4819.  ────────────────────────────────────────────────────────────────────────────
  4820.   SNDBLST v4.0                                          SNDBLST4.ZIP    96K
  4821.     David Welch                                         1993
  4822.     x2ftp.oulu.fi::pub/msdos/programming/music          C
  4823.  ────────────────────────────────────────────────────────────────────────────
  4824.  
  4825. NEWSGROUPS
  4826.  ────────────────────────────────────────────────────────────────────────────
  4827.   SoundBlaster Programming
  4828.     alt.sb.programmer
  4829.  
  4830.   Soundcard Technical Discussion
  4831.     comp.sys.ibm.pc.soundcard.tech
  4832.     comp.sys.ibm.pc.soundcard.misc
  4833.  ────────────────────────────────────────────────────────────────────────────
  4834.  
  4835. ==============================================================================
  4836.  CONTACT ADDRESSES
  4837. ------------------------------------------------------------------------------
  4838.  André Baresel      baresel@informatik.hu-berlin.de     (Internet )
  4839.    Cyder of
  4840.   Green Apple       André Baresel                       (Snailmail)
  4841.                     Hans-Grade-Ring 5
  4842.                     14480 Potsdam
  4843.                     Germany
  4844.  
  4845.  Craig Jackson      Craig.Jackson@launchpad.unc.edu     (Internet )
  4846.  
  4847.                     Craig Jackson                       (Snailmail)
  4848.                     119 Penwood Drive
  4849.                     Cary, North Carolina 27511
  4850.                     United States of America
  4851.  
  4852.